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; using System.Collections; namespace Estore { public class CustomizationControl : WebBlocksControl { public int SelectorID { get { return (ViewState["SelectorID"] == null ? 0 : (int)ViewState["SelectorID"]); } set { ViewState["SelectorID"] = value; } } public CustomizationList GetCustomizationList() { if (htControls == null) return null; else { CustomizationList cl = new CustomizationList(htControls.Count); foreach (CustomizationEntry ce in htControls.Keys) { switch (ce.ControlType) { case DatabaseClass.Enumerations.CustomizationControlTypes.DropDownList: DropDownList ddl = (DropDownList)htControls[ce]; decimal Price = Database.CustomizationOptions_GetPriceByCustomizationOptionID(Int32.Parse(ddl.SelectedValue)); cl.CustomizationCost += Price; cl.Add(ce, ddl.SelectedItem.Text); break; case DatabaseClass.Enumerations.CustomizationControlTypes.CheckBoxList: CheckBoxList cbl = (CheckBoxList)htControls[ce]; decimal PriceAugmentTotal = 0; string StringValue = String.Empty; foreach (ListItem li in cbl.Items) { if (li.Selected) { StringValue += li.Text + ","; PriceAugmentTotal += Database.CustomizationOptions_GetPriceByCustomizationOptionID(Int32.Parse(li.Value)); } } cl.CustomizationCost += PriceAugmentTotal; cl.Add(ce, StringValue.Trim(',')); break; case DatabaseClass.Enumerations.CustomizationControlTypes.TextBox: cl.Add(ce, ((TextBox)htControls[ce]).Text); break; case DatabaseClass.Enumerations.CustomizationControlTypes.LargeTextBox: cl.Add(ce, ((TextBox)htControls[ce]).Text); break; case DatabaseClass.Enumerations.CustomizationControlTypes.FileUpload: WebBlocks.FileUploadControl fUpload = (WebBlocks.FileUploadControl)htControls[ce]; if (fUpload.Filename.Length > 0) { string URLToFile = "http://" + Page.Request.Url.Authority + ((WebBlockPage)Page).RelativePath + "/" + fUpload.Directory + fUpload.Filename; cl.Add(ce, URLToFile); } break; default: break; } } return cl; } } public string[] Labels; private Hashtable htControls; public void BindData() { Controls.Clear(); DataTable dt = Database.Customizations_GetBySelectorID(SelectorID); if (dt.Rows.Count > 0) { htControls = new Hashtable(dt.Rows.Count); Labels = new string[dt.Rows.Count]; int i = 0; foreach (DataRow dr in dt.Rows) { CustomizationEntry custEntry = new CustomizationEntry((DatabaseClass.Enumerations.CustomizationControlTypes)dr["ControlType"], (int)dr["CustomizationID"], (string)dr["Name"]); DataTable dtOptions = Database.CustomizationOptions_GetByCustomizationID((int)dr["CustomizationID"]); switch ((DatabaseClass.Enumerations.CustomizationControlTypes)dr["ControlType"]) { case DatabaseClass.Enumerations.CustomizationControlTypes.DropDownList: DropDownList ddl = new DropDownList(); ddl.DataTextField = "OptionName"; ddl.DataValueField = "CustomizationOptionID"; ddl.CssClass = "customizationField"; ddl.DataSource = dtOptions; ddl.DataBind(); Controls.Add(ddl); htControls.Add(custEntry, ddl); break; case DatabaseClass.Enumerations.CustomizationControlTypes.CheckBoxList: CheckBoxList cbl = new CheckBoxList(); cbl.DataTextField = "OptionName"; cbl.DataValueField = "CustomizationOptionID"; cbl.CssClass = "customizationField"; cbl.DataSource = dtOptions; cbl.DataBind(); Controls.Add(cbl); htControls.Add(custEntry, cbl); break; case DatabaseClass.Enumerations.CustomizationControlTypes.TextBox: TextBox tb1 = new TextBox(); tb1.TextMode = TextBoxMode.SingleLine; tb1.CssClass = "customizationField"; Controls.Add(tb1); htControls.Add(custEntry, tb1); break; case DatabaseClass.Enumerations.CustomizationControlTypes.LargeTextBox: TextBox tb2 = new TextBox(); tb2.TextMode = TextBoxMode.MultiLine; tb2.CssClass = "customizationField"; Controls.Add(tb2); htControls.Add(custEntry, tb2); break; case DatabaseClass.Enumerations.CustomizationControlTypes.FileUpload: WebBlocks.FileUploadControl fUpload = new WebBlocks.FileUploadControl(); fUpload.AutoPostback = false; fUpload.Directory = "Resources/UploadedFiles/" + DateTime.Now.ToString("MM-dd-yyyy") + "/"; Controls.Add(fUpload); htControls.Add(custEntry, fUpload); break; default: break; } Labels[i++] = (string)dr["Prompt"]; } } } protected override void Render(HtmlTextWriter writer) { if (htControls != null && htControls.Count > 0) { writer.Write(""); for (int i = 0; i < Controls.Count; i++) { writer.Write(""); writer.Write(""); writer.Write(""); } writer.Write("
"); writer.Write(Labels[i]); writer.Write("
"); Controls[i].RenderControl(writer); writer.Write("
"); } } } }