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; public partial class Admin_Controls_Customizations : WebBlockUserControl { public int SelectorID { get { return (ViewState["SelectorID"] == null ? 0 : (int)ViewState["SelectorID"]); } set { ViewState["SelectorID"] = value; } } public int CustomizationID { get { return (ViewState["CustomizationID"] == null ? 0 : (int)ViewState["CustomizationID"]); } set { ViewState["CustomizationID"] = value; } } public int CurrentEmptyRows { get { return (ViewState["CurrentEmptyRows"] == null ? 1 : (int)ViewState["CurrentEmptyRows"]); } set { ViewState["CurrentEmptyRows"] = value; } } public void BindData() { if (!Page.IsPostBack) { BindPageOne(); } BindOptions(false); } private void BindPageOne() { DataTable dt = Database.Customizations_GetBySelectorID(SelectorID); gvCustomizations.DataSource = dt; gvCustomizations.DataBind(); } protected void Menu1_MenuItemClick(object sender, MenuEventArgs e) { mvContent.ActiveViewIndex = Int32.Parse(e.Item.Value); if (mvContent.ActiveViewIndex == 0) BindPageOne(); else if (mvContent.ActiveViewIndex == 1) { CustomizationID = 0; BindAddCustomization(); } else if (mvContent.ActiveViewIndex == 2) BindPageThree(); } #region Add/Edit Customization Tab protected void custOptions_ServerValidate(object source, ServerValidateEventArgs args) { if (ddlControlType.SelectedValue == "1" || ddlControlType.SelectedValue == "2") { foreach (GridViewRow gvr in gvOptions.Rows) { string OptionName = ((TextBox)gvr.Cells[0].Controls[0]).Text; string Price = ((TextBox)gvr.Cells[1].Controls[0]).Text; if (OptionName.Length > 0 && Price.Length == 0) { args.IsValid = false; return; } else if (Price.Length > 0) { decimal nullOut; if (!Decimal.TryParse(Price, out nullOut)) { args.IsValid = false; return; } } } } args.IsValid = true; return; } protected void btnSubmit_Click(object sender, EventArgs e) { reqName.Visible = reqName.Enabled = true; reqPrompt.Visible = reqPrompt.Enabled = true; Page.Validate(); if (Page.IsValid) { if (CustomizationID == 0) CustomizationID = Database.Customizations_Add(SelectorID, txtName.Text, txtPrompt.Text, Int32.Parse(ddlControlType.SelectedValue)); else Database.Customizations_Update(CustomizationID, SelectorID, txtName.Text, txtPrompt.Text, Int32.Parse(ddlControlType.SelectedValue)); foreach (GridViewRow gvr in gvOptions.Rows) { int CustomizationOptionID = (int)gvOptions.DataKeys[gvr.RowIndex].Value; TextBox txtOptionName = (TextBox)gvr.Cells[0].Controls[0]; TextBox txtPrice = (TextBox)gvr.Cells[1].Controls[0]; if (txtOptionName.Text.Length == 0) Database.CustomizationOptions_Delete(CustomizationOptionID); else { string OptionName = txtOptionName.Text; decimal Price = Decimal.Parse(txtPrice.Text); if (CustomizationOptionID > 0) Database.CustomizationOptions_Update(CustomizationOptionID, CustomizationID, OptionName, Price); else Database.CustomizationOptions_Add(CustomizationID, OptionName, Price); } } CustomizationID = 0; BindPageOne(); Menu1.Items[0].Selected = true; mvContent.ActiveViewIndex = 0; } } #endregion protected void btnRemoveSelected_Click(object sender, EventArgs e) { foreach (GridViewRow gvr in gvCustomizations.Rows) { if (gvr.RowType == DataControlRowType.DataRow) { CheckBox cb = (CheckBox)gvr.Cells[0].Controls[0]; if (cb.Checked) { int TempCustomizationID = (int)gvCustomizations.DataKeys[gvr.RowIndex].Value; Database.CustomizationOptions_DeleteByCustomizationID(TempCustomizationID); Database.Customizations_Delete(TempCustomizationID); } } } BindPageOne(); } private void BindAddCustomization() { if (CustomizationID == 0) { litCustomizationID.Text = "New Customization"; txtName.Text = ""; txtPrompt.Text = ""; ddlControlType.SelectedValue = "1"; CurrentEmptyRows = 3; } else { DataRow dr = Database.Customizations_Get(CustomizationID); if (dr != null) { litCustomizationID.Text = CustomizationID.ToString(); txtName.Text = (string)dr["Name"]; txtPrompt.Text = (string)dr["Prompt"]; ddlControlType.SelectedValue = dr["ControlType"].ToString(); CurrentEmptyRows = 1; } } BindOptions(false); } private void BindOptions(bool SaveOptions) { DataTable dt = Database.CustomizationOptions_GetByCustomizationID(CustomizationID); for (int i = 0; i < CurrentEmptyRows; i++) { DataRow dr = dt.NewRow(); dr["CustomizationOptionID"] = 0; dr["OptionName"] = ""; dr["Price"] = 0M; dt.Rows.Add(dr); } if (SaveOptions) { for (int i = 0; i < gvOptions.Rows.Count; i++) { DataRow dr = dt.Rows[i]; TextBox txtOptionName = (TextBox)gvOptions.Rows[i].Cells[0].Controls[0]; TextBox txtPrice = (TextBox)gvOptions.Rows[i].Cells[1].Controls[0]; dr["OptionName"] = txtOptionName.Text; dr["Price"] = Decimal.Parse(txtPrice.Text); } } gvOptions.DataSource = dt; gvOptions.DataBind(); } protected void gvCustomizations_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "ed") { int RowIndex = Int32.Parse((string)e.CommandArgument); CustomizationID = (int)gvCustomizations.DataKeys[RowIndex].Value; BindAddCustomization(); Menu1.Items[1].Selected = true; mvContent.ActiveViewIndex = 1; } } protected void btnAddMore_Click1(object sender, EventArgs e) { CurrentEmptyRows++; BindOptions(true); } private void BindPageThree() { DataTable dt = Database.Categories_GetAll(); ddlCategory.DataSource = dt; ddlCategory.DataBind(); ddlCategory.Items.Insert(0, new ListItem("Select", "")); } protected void ddlCategory_SelectedIndexChanged(object sender, EventArgs e) { if (ddlCategory.SelectedValue != "") { DataTable dt = Database.Selectors_GetByCategoryID(Int32.Parse(ddlCategory.SelectedValue)); ddlSelector.DataSource = dt; ddlSelector.DataBind(); ddlSelector.Items.Insert(0, new ListItem("Select", "")); ddlSelector.Enabled = true; } } protected void ddlSelector_SelectedIndexChanged(object sender, EventArgs e) { if (ddlSelector.SelectedValue != "") { DataTable dt = Database.Customizations_GetBySelectorID(Int32.Parse(ddlSelector.SelectedValue)); ddlCustomization.DataSource = dt; ddlCustomization.DataBind(); ddlCustomization.Items.Insert(0, new ListItem("Select", "")); ddlCustomization.Enabled = true; } } protected void btnCopy_Click(object sender, EventArgs e) { if (ddlCustomization.SelectedValue != "") { DataRow dr = Database.Customizations_Get(Int32.Parse(ddlCustomization.SelectedValue)); txtName.Text = (string)dr["Name"]; txtPrompt.Text = (string)dr["Prompt"]; ddlControlType.SelectedValue = dr["ControlType"].ToString(); DataTable dt = Database.CustomizationOptions_GetByCustomizationID(Int32.Parse(ddlCustomization.SelectedValue)); foreach (DataRow drx in dt.Rows) drx["CustomizationOptionID"] = 0; CurrentEmptyRows = 1; gvOptions.DataSource = dt; gvOptions.DataBind(); CustomizationID = 0; Menu1.Items[1].Selected = true; mvContent.ActiveViewIndex = 1; } else Page.ClientScript.RegisterStartupScript(typeof(string), "err", "alert('Please select a customization to copy.');", true); } }