using System; using System.Data; using System.Configuration; 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; namespace Estore.CustomizationControls { public class CheckBoxList : CustomizationControlBase { private System.Web.UI.WebControls.CheckBoxList ctl; private decimal[] CustomizationCosts { get { return (decimal[])ViewState["CustomizationCosts"]; } set { ViewState["CustomizationCosts"] = value; } } protected override void OnInit(EventArgs e) { ctl = new System.Web.UI.WebControls.CheckBoxList(); ctl.DataTextField = "OptionName"; ctl.DataValueField = "CustomizationOptionID"; ctl.CssClass = "customizationField"; Controls.Add(ctl); base.OnInit(e); } public override void BindOptions(DataTable dt) { decimal[] CustCosts = new decimal[dt.Rows.Count]; for (int i = 0; i < CustCosts.Length; i++) CustCosts[i] = (decimal)dt.Rows[i]["Price"]; CustomizationCosts = CustCosts; ctl.DataSource = dt; ctl.DataBind(); } public override string Text { get { string retText = ""; foreach (ListItem li in ctl.Items) { if (li.Selected == true) retText += li.Text + ","; } return retText.TrimEnd(','); } } public override decimal SelectedCustomizationCost { get { if (CustomizationCosts != null) { decimal total = 0M; for(int i = 0; i < ctl.Items.Count; i++) { if (ctl.Items[i].Selected == true) total += CustomizationCosts[i]; } return total; } else return 0M; } } } }