May 25, 2011, 1:46 PM
How to create CheckBoxes on runtime and set their Checked = true or false
I'm having issues with checkboxgroup I'm able to add checkboxes on runtime without any problems but can't set their Checked properties.
Client Side HTML
Server Side Code
------------------------------
Client Side HTML
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ManageCoupons.ascx.cs"
Inherits="Ctrl_ManageCoupons" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<h2>
Manage Coupons</h2>
<ext:Store ID="Store1" runat="server" RemoteSort="true" OnRefreshData="Store1_RefreshData">
<Proxy>
<ext:PageProxy />
</Proxy>
<Reader>
<ext:JsonReader IDProperty="Column">
<Fields>
<ext:RecordField Name="ID" />
<ext:RecordField Name="Name" />
<ext:RecordField Name="Description" />
<ext:RecordField Name="Percentage" />
<ext:RecordField Name="Active" />
</Fields>
</ext:JsonReader>
</Reader>
<AutoLoadParams>
<ext:Parameter Name="start" Value="0" Mode="Raw" />
<ext:Parameter Name="limit" Value="5" Mode="Raw" />
</AutoLoadParams>
<SortInfo Field="LastName" Direction="ASC" />
<Listeners>
<LoadException Handler="Ext.MessageBox.alert('Load failed', response.statusText);" />
</Listeners>
</ext:Store>
<ext:GridPanel ID="gv" runat="server" StoreID="Store1" Title="Columns" Header="false"
Height="275">
<ColumnModel ID="ColumnModel1" runat="server">
<Columns>
<ext:Column ColumnID="Name" DataIndex="Name" Header="Name" Width="250px">
</ext:Column>
<ext:Column ColumnID="Description" DataIndex="Description" Header="Description" Width="250px">
</ext:Column>
<ext:Column ColumnID="Percentage" DataIndex="Percentage" Header="Percentage %">
</ext:Column>
<ext:Column ColumnID="Active" DataIndex="Active" Header="Active">
</ext:Column>
</Columns>
</ColumnModel>
<SelectionModel>
<ext:RowSelectionModel SingleSelect="true" ID="RowSelectionModel1" runat="server" />
</SelectionModel>
<LoadMask ShowMask="true" />
<SaveMask ShowMask="true" />
<BottomBar>
<ext:Toolbar runat="server">
<Items>
<ext:Button runat="server" ID="btn" Text="Add New" Icon="New">
<DirectEvents>
<Click>
<ExtraParams>
<ext:Parameter Name="Values" Value="Ext.encode(#{gv}.getRowsValues({selectedOnly:true}))"
Mode="Raw" />
</ExtraParams>
</Click>
</DirectEvents>
</ext:Button>
<ext:Button runat="server" ID="btnEdit" Text="Edit" Icon="ServerEdit">
<DirectEvents>
<Click OnEvent="EditCoupon">
<ExtraParams>
<ext:Parameter Name="Values" Value="Ext.encode(#{gv}.getRowsValues({selectedOnly:true}))"
Mode="Raw" />
</ExtraParams>
</Click>
</DirectEvents>
</ext:Button>
<ext:Button runat="server" ID="btnDelete" Text="Delete" Icon="Delete">
<DirectEvents>
<Click OnEvent="DeleteCoupon">
<ExtraParams>
<ext:Parameter Name="Values" Value="Ext.encode(#{gv}.getRowsValues({selectedOnly:true}))"
Mode="Raw" />
</ExtraParams>
<Confirmation ConfirmRequest="true" Message="Are you sure you want to delete this coupon?" />
</Click>
</DirectEvents>
</ext:Button>
</Items>
</ext:Toolbar>
</BottomBar>
</ext:GridPanel>
<style type="text/css">
body
{
text-align: left;
}
.lblText
{
color: Black;
font-weight: bold;
font-size: 14px;
}
</style>
<ext:Window ID="EntityDetailsWindow" Cls="lblText" runat="server" Icon="TableAdd"
Width="1000" Height="500" Modal="true" AutoShow="false" Header="false" Hidden="true"
Layout="Fit">
<Items>
<ext:TabPanel ID="tabEntityDetails" runat="server" ActiveTabIndex="0" Border="false"
DeferredRender="false">
<Items>
<ext:Panel ID="EntityDetailsTab" runat="server" Title="Basic Details" Icon="Table"
Padding="5">
<Items>
<ext:TextField ID="txtName" MaxLength="50" EnableKeyEvents="true" AllowBlank="false"
runat="server" FieldLabel="Name" Width="350">
</ext:TextField>
<ext:TextField ID="txtDescription" MaxLength="150" runat="server" AllowBlank="false"
FieldLabel="Description" Width="350" />
<ext:NumberField ID="txtPercentage" runat="server" FieldLabel="Percentage %" Width="200"
AllowDecimals="true" AllowBlank="false" AllowNegative="false">
</ext:NumberField>
<ext:CheckboxGroup Height="40" runat="server" FieldLabel="Tier Packages" ID="chkTierPackages" Width="400">
<Items>
</Items>
</ext:CheckboxGroup>
<ext:Checkbox runat="server" ID="chkOneTimeOnly" FieldLabel="One Time Use">
</ext:Checkbox>
<ext:Checkbox runat="server" ID="chkActive" FieldLabel="Active">
</ext:Checkbox>
</Items>
</ext:Panel>
<ext:Panel ID="CouponsTab" runat="server" Title="Coupons" Icon="BulletAdd" Padding="5"
Layout="Form">
<TopBar>
<ext:Toolbar ID="Toolbar1" runat="server">
<Items>
<ext:Button ID="btnAdd" runat="server" Text="Refresh" Icon="Reload">
<DirectEvents>
</DirectEvents>
<ToolTips>
<ext:ToolTip ID="ToolTip2" runat="server" Html="Refresh" />
</ToolTips>
</ext:Button>
<ext:ToolbarSpacer ID="ToolbarSpacer1" runat="server" />
<ext:ToolbarSeparator ID="ctl122" />
<ext:Button ID="btnProperties" runat="server" Icon="Add" Text="Add Properties">
<Menu>
<ext:Menu ID="mnuProperties" runat="server">
</ext:Menu>
</Menu>
<ToolTips>
<ext:ToolTip ID="ToolTip1" runat="server" Html="Add Properties" />
</ToolTips>
</ext:Button>
</Items>
</ext:Toolbar>
</TopBar>
<Content>
</Content>
</ext:Panel>
</Items>
</ext:TabPanel>
</Items>
<Buttons>
<ext:Button ID="SaveButton" runat="server" Text="Save" Icon="Disk">
<DirectEvents>
<Click OnEvent="SaveData" Failure="Ext.MessageBox.alert('Saving failed', 'Error during ajax event');">
<EventMask ShowMask="true" Target="CustomTarget" CustomTarget="={#{EntityDetailsWindow}.body}" />
</Click>
</DirectEvents>
</ext:Button>
<ext:Button ID="CancelButton" runat="server" Text="Cancel" Icon="Cancel">
<Listeners>
<Click Handler="alert('closing');#{EntityDetailsWindow}.hide(null);" />
</Listeners>
</ext:Button>
</Buttons>
</ext:Window>
<ext:Hidden ID="lblID" runat="server" Hidden="true">
</ext:Hidden>
Server Side Code
------------------------------
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using fw;
using fw.Tools;
using fw.Tools.UI;
using fw.Tools.Managers;
using fw.Tools.DataHelper;
using fw.Tools.DataGroups;
using fw.Tools.DataElements;
using fw.UI.WebControls.Elements;
using bll = Comrange.Framework.bll;
using cf.CTC.Marketing;
using Ext.Net;
using System.Collections.Generic;
using System.Text;
using cf.CTC.Catalog;
public partial class Ctrl_ManageCoupons : BaseUIObject
{
public override void LoadObject(cf.CMS.UI_Object objectToLoad)
{
// TODO: Implement the logic of the custom module here.
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) return;
LoadInitialValues(null);
//LoadColumns();
}
public void LoadColumns()
{
Collection<CouponType> couponTypes = CouponType.GetAllCouponTypes();
couponTypes.Sort("Name");
this.Store1.DataSource = couponTypes;
this.Store1.DataBind();
//gvColumns.DataSource = columns;
// gvColumns.DataBind();
}
protected void EditColumn(object sender, DirectEventArgs e)
{
string ID = e.ExtraParams["ID"];
string command = e.ExtraParams["Command"];
if (!string.IsNullOrEmpty(ID) && !string.IsNullOrEmpty(command))
{
if (command.Equals("Delete"))
{
}
else if (command.Equals("Edit"))
{
}
}
}
protected void EditCoupon(object sender, DirectEventArgs e)
{
string values = e.ExtraParams["Values"];
Guid ID = GetCouponID(values);
if (ID != Guid.Empty)
{
CouponType type = cf.Database.Load<CouponType>(ID);
// Edit
LoadData(type);
this.EntityDetailsWindow.Show();
}
else
{
this.ShowMsg("Please select coupon first.");
}
}
protected Guid GetCouponID(string values)
{
Dictionary<string, string>[] companies = JSON.Deserialize<Dictionary<string, string>[]>(values);
Guid ID = Guid.Empty;
//string ID = companies.;
foreach (Dictionary<string, string> row in companies)
{
foreach (KeyValuePair<string, string> keyValuePair in row)
{
if (keyValuePair.Key == "ID")
{
ID = new Guid(keyValuePair.Value);
return ID;
}
}
}
return ID;
}
protected void DeleteCoupon(object sender, DirectEventArgs e)
{
string values = e.ExtraParams["Values"];
Guid ID = GetCouponID(values);
if (ID != Guid.Empty)
{
//Delete Coupon
}
}
private void CancelDelete()
{
}
private void CallDelete()
{
}
protected void Page_Init(object sender, EventArgs e)
{
}
protected void ShowDetails(object sender, DirectEventArgs e)
{
}
public void SetValues(string tableName)
{
//this.lbltableName.Text = tableName;
// LoadColumns();
}
protected void Store1_RefreshData(object sender, StoreRefreshDataEventArgs e)
{
LoadColumns();
}
protected void EditingFileColumn(bll.Column column)
{
}
private void LoadInitialValues(CouponType type)
{
Collection<Product> tierPackages = Product.GetTierPackages();
Collection<string> settings = new Collection<string>();
if (type != null)
{
settings = type.GetCouponTypeSettingIDs();
}
foreach (Product tier in tierPackages)
{
if (settings.Contains(tier.ID.ToString()))
{
chkTierPackages.Items.Add(new Checkbox
{
InputValue = tier.ID.ToString()
,
Note = tier.CTCProduct.Description,
Value = true,
Checked = true
});
}
else
{
chkTierPackages.Items.Add(new Checkbox
{
InputValue = tier.ID.ToString()
,
Note = tier.CTCProduct.Description,
Value = false,
Checked = false
});
}
}
}
public void Show()
{
this.EntityDetailsWindow.Title = "Adding new coupons";
this.CouponsTab.Disabled = true;
this.EntityDetailsWindow.Show();
}
private void ShowError(string msg)
{
MessageBoxConfig config = new MessageBoxConfig();
config.Icon = MessageBox.Icon.ERROR;
config.Message = msg;
config.Title = "Error(s)";
config.Buttons = MessageBox.Button.OK;
X.MessageBox.Alert("", "").Show(config);//"Error(s):", errorMsgs.ToString()).Show();
}
private void ShowMsg(string msg)
{
MessageBoxConfig config = new MessageBoxConfig();
config.Icon = MessageBox.Icon.INFO;
config.Message = msg;
config.Title = "Message";
config.Buttons = MessageBox.Button.OK;
X.MessageBox.Alert("", "").Show(config);//"Error(s):", errorMsgs.ToString()).Show();
}
public void Show(Guid ID)
{
this.EntityDetailsWindow.Title = "Coupon Details";
this.lblID.Text = ID.ToString();
this.CouponsTab.Disabled = false;
this.CouponsTab.Enabled = true;
this.EntityDetailsWindow.Show();
}
protected void SaveData(object sender, DirectEventArgs e)
{
CouponType couponType = null;
if (!string.IsNullOrEmpty(this.lblID.Text))
couponType = cf.Database.Load<CouponType>(this.lblID.Text);
couponType.Name = txtName.Text;
couponType.Description = txtDescription.Text;
couponType.Percentage = double.Parse(txtPercentage.Text);
couponType.Active = chkActive.Checked;
couponType.OneTimeOnly = chkOneTimeOnly.Checked;
cf.Database.Save(couponType);
SaveSettings(couponType);
ShowMsg("Coupon Data Saved!");
}
private void SaveSettings(CouponType type)
{
}
private void SaveSetting(Checkbox chkbox)
{
}
private void LoadData(CouponType type)
{
txtName.Text = type.Name;
txtDescription.Text = type.Description;
txtPercentage.Text = type.Percentage.ToString();
chkActive.Checked = type.Active;
chkOneTimeOnly.Checked = type.OneTimeOnly;
LoadInitialValues(type);
}
}
Last edited by Daniil; May 25, 2011 at 4:54 PM.
Reason: Please use [CODE] tags