--------------------------------------------------------------------------------
Hi,
I am creating a Dynamic Search in my application.
I create a user control and in Page_load event I create a dynamic dropdownlist and 2 dynamic button (Add,Remove)
By pressing Add button ,another row will be created with the same control (I mean another dropdown and 2 button) and so on.
and by pressing Remove button the selecetd row will be removed.
I used viewstate to keep my value for postback,
I want by changing selectedvalue of dropdownlist ,create another dynamic dropdown and textbox. so far my code is working but when I click "Add" button to create another row ,I lost my second dropdownlist and textbox.
I don not know where should I fire my SelectedValue event,to keep all control on form ,by each postback I have all my control except controls that are created by selectedvalechange event
Here is all my code.
any idea???
Expand|Select|Wrap|Line Numbers
- 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 AjaxControlToolkit;
- namespace LangleySunWorx.Controls
- {
- public partial class WorkOrderSearch : System.Web.UI.UserControl
- {
- int number = 1;
- int j = 0;
- DropDownList[] _SearchByArray = new DropDownList[20]; //SearchBy Dropdown List
- DropDownList[] _FilterByArray = new DropDownList[20]; //FilterBy DropDown List
- DropDownList[] _DdlValueArray = new DropDownList[20]; //for fields which are drop and selected from SearchBy
- TextBox[] _TxtValueArray = new TextBox[20];//for fields which are text and selected from SearchBy
- TextBox[] _TxtDateValueArray = new TextBox[20];//for fields which are Date and selected from SearchBy
- Image[] _ImgBtnCalendarArray = new Image[20];//Image for fields which are Date and selected from SearchBy
- CalendarExtender[] _CalendarExtenderArray = new CalendarExtender[20];
- DropDownExtender[] _DropDownExtenderArray = new DropDownExtender[20];
- Button[] _BtnAddArray = new Button[20];
- Button[] _BtnRemoveArray = new Button[20];
- public string [] SearchByText= new string[] {
- "Txt_Order#","Cmb_Job#", "Cmb_Status", "Dat_Date Created","Dat_Date Required",
- "Dat_Date Started","Dat_Date Completed","Txt_Pole#","Txt_House#","Txt_Location",
- "Txt_Priority","Txt_Parent Order#","Txt_System User","Txt_Originator","Cmb_Originator Type",
- "Txt_Originator Name","Cmb_Problem Code","Cmb_Billing Rate","Cmb_City Area","Txt_Map Reference",
- "Txt_Occurence#","Cmb_Request Locates","Cmb_Request Permits","Cmb_Restoration","Cmb_Police Services" };
- public string[] SearchByValue= new string[] {
- "WorkorderID","JobID", "StatusID", "DateCreated","DateRequired",
- "DateStarted","DateCompleted","PoleNumber","HouseNumber","Location",
- "PriorityID","ParentWorkOrderID","SystemUserID","OriginatorID","OriginatorType",
- "OriginatorName","ProblemCodeID","BillingRateID","CityArea","MapReference",
- "OccurenceNumber","flagRequestLocates","flagRequestPermits","flagIsRestoration","flagPoliceServices" };
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack)
- {
- InsertComponet(number);
- ViewState.Add("Counter", number);
- }
- }
- protected void InsertComponet(int Index)
- {
- InsertRow(Index);
- FillSearchBy(Index);
- _SearchByArraySelectedIndexChanged(_SearchByArray[Index], EventArgs.Empty);
- FillFilterBy(Index);
- FillAddRemoveButton(Index);
- ViewState["controlsadded"] = true;
- ViewState["Counter"] = Index;
- }
- protected void InsertRow(int RowNumber)
- {
- HtmlTableRow tRow = new HtmlTableRow();
- HtmlTableCell[] _CellArray = new HtmlTableCell[6];
- for (int i = 0; i <= 5; i++)
- {
- _CellArray[i] = new HtmlTableCell();
- }
- tRow.Height = "50";
- tRow.VAlign = "Middle";
- Table11.Rows.Insert(RowNumber, tRow);
- Table11.Rows[RowNumber].Cells.Insert(0, _CellArray[0]);
- Table11.Rows[RowNumber].Cells.Insert(1, _CellArray[1]);
- //Table11.Rows[RowNumber].Cells[1].InnerText = "Search By ";
- Table11.Rows[RowNumber].Cells.Insert(2, _CellArray[2]);
- //Table11.Rows[RowNumber].Cells[2].InnerText = "Filter By ";
- Table11.Rows[RowNumber].Cells.Insert(3, _CellArray[3]);
- Table11.Rows[RowNumber].Cells.Insert(4, _CellArray[4]);
- Table11.Rows[RowNumber].Cells.Insert(5, _CellArray[5]);
- }
- protected void DeleteRow(int RowNumber)
- {
- HtmlTableRow tRow = new HtmlTableRow();
- Table11.Rows.RemoveAt(RowNumber);
- }
- protected void FillSearchBy(int Index)
- {
- _SearchByArray[Index] = new DropDownList();
- _SearchByArray[Index].ID = "_SearchByArray" + Convert.ToString(Index);
- _SearchByArray[Index].Width = 150;
- _SearchByArray[Index].AutoPostBack = true;
- _SearchByArray[Index].Items.Clear();
- for (int i = 0; i <= SearchByText.Length - 1; i++)
- {
- _SearchByArray[Index].Items.Add(new ListItem(SearchByText[i].Substring(4), SearchByValue[i]));
- }
- _SearchByArray[Index].SelectedIndexChanged += new System.EventHandler(this._SearchByArraySelectedInd exChanged);
- Table11.Rows[Index].Cells[1].Controls.Add(_SearchByArray[Index]);
- //_DropDownExtenderArray[Index] = new AjaxControlToolkit.DropDownExtender();
- //_DropDownExtenderArray[Index].ID = "_DropDownExtenderArray" + Convert.ToString(Index); ;
- //_DropDownExtenderArray[Index].TargetControlID = "_SearchByArray" + Convert.ToString(Index);
- //Table11.Rows[Index].Cells[1].Controls.Add(_DropDownExtenderArray[Index]);
- }
- protected void FillFilterBy(int Index)
- {
- _FilterByArray[Index] = new DropDownList();
- _FilterByArray[Index].ID = "_FilterByArray" + Convert.ToString(Index);
- _FilterByArray[Index].Width = 150;
- _FilterByArray[Index].AutoPostBack = true;
- _FilterByArray[Index].Items.Clear();
- Table11.Rows[Index].Cells[2].Controls.Add(_FilterByArray[Index]);
- }
- protected void FillAddRemoveButton(int Index)
- {
- _BtnAddArray[Index] = new Button();
- _BtnAddArray[Index].ID = "_BtnAddArray" + Convert.ToString(Index);
- _BtnAddArray[Index].CssClass = "button";
- _BtnAddArray[Index].Text = "ADD";
- _BtnAddArray[Index].Width = 60;
- _BtnAddArray[Index].Click += new System.EventHandler(this._BtnADDClickHandler);
- Table11.Rows[Index].Cells[4].Controls.Add(_BtnAddArray[Index]);
- _BtnRemoveArray[Index] = new Button();
- _BtnRemoveArray[Index].ID = "_BtnRemoveArray" + Convert.ToString(Index);
- _BtnRemoveArray[Index].Text = "Remove";
- _BtnRemoveArray[Index].Width = 60;
- _BtnRemoveArray[Index].CssClass = "button";
- _BtnRemoveArray[Index].Click += new System.EventHandler(this._BtnRemoveClickHandler);
- Table11.Rows[Index].Cells[4].Controls.Add(_BtnRemoveArray[Index]);
- }
- //Dynamic Events
- protected void _SearchByArraySelectedIndexChanged(object sender, EventArgs e)
- {
- int SelectedItem = 0;
- SelectedItem = Convert.ToInt32(((DropDownList)sender).ID.Substrin g(((DropDownList)sender).ID.Length - 1, 1));
- switch (SearchByText[((DropDownList)sender).SelectedIndex].Substring(0, 3))
- {
- case "Txt":
- _TxtValueArray[SelectedItem] = new TextBox();
- _TxtValueArray[SelectedItem].ID = "_TxtValueArray" + Convert.ToString(SelectedItem);
- _TxtValueArray[SelectedItem].Text = SearchByText[((DropDownList)sender).SelectedIndex].Substring(4);
- _TxtValueArray[SelectedItem].Width = 150;
- Table11.Rows[SelectedItem].Cells[3].Controls.Add(_TxtValueArray[SelectedItem]);
- break;
- case "Cmb":
- _DdlValueArray[SelectedItem] = new DropDownList();
- _DdlValueArray[SelectedItem].ID = "_DdlValueArray" + Convert.ToString(SelectedItem);
- _DdlValueArray[SelectedItem].Width = 150;
- Table11.Rows[SelectedItem].Cells[3].Controls.Add(_DdlValueArray[SelectedItem]);
- break;
- case "Dat":
- //Create TextBox for Date
- _TxtDateValueArray[SelectedItem] = new TextBox();
- _TxtDateValueArray[SelectedItem].ID = _TxtDateValueArray + Convert.ToString(SelectedItem);
- Table11.Rows[SelectedItem].Cells[3].Controls.Add(_TxtDateValueArray[SelectedItem]);
- //Create Image for Calendar Image
- _ImgBtnCalendarArray[SelectedItem] = new Image();
- _ImgBtnCalendarArray[SelectedItem].ID = "_ImgBtnCalendarArray" + Convert.ToString(SelectedItem);
- _ImgBtnCalendarArray[SelectedItem].ImageUrl = "~/imgs/Calendar.ico";
- Table11.Rows[SelectedItem].Cells[3].Controls.Add(_ImgBtnCalendarArray[SelectedItem]);
- //Create CalendarExtender
- _CalendarExtenderArray[SelectedItem] = new AjaxControlToolkit.CalendarExtender();
- _CalendarExtenderArray[SelectedItem].ID = "_CalendarExtenderArray"+ Convert.ToString(SelectedItem);
- _CalendarExtenderArray[SelectedItem].TargetControlID = _TxtDateValueArray + Convert.ToString(SelectedItem);
- _CalendarExtenderArray[SelectedItem].CssClass = "RedCalendar";
- _CalendarExtenderArray[SelectedItem].Format = "d";
- _CalendarExtenderArray[SelectedItem].PopupButtonID = "_ImgBtnCalendarArray" + Convert.ToString(SelectedItem);
- Table11.Rows[SelectedItem].Cells[3].Controls.Add(_CalendarExtenderArray[SelectedItem]);
- break;
- }
- }
- public void _BtnADDClickHandler(object sender, System.EventArgs e)
- {
- number = (int)ViewState["Counter"];
- number += 1;
- InsertComponet(number);
- Label1.Text = Convert.ToString(number);
- }
- public void _BtnRemoveClickHandler(object sender, System.EventArgs e)
- {
- number = (int)ViewState["Counter"];
- number -= 1;
- ViewState["Counter"] = number;
- int SelectedItem = 0;
- SelectedItem = Convert.ToInt32(((Button)sender).ID.Substring(((Bu tton)sender).ID.Length - 1, 1));
- DeleteRow(SelectedItem);
- Label1.Text = Convert.ToString(number);
- }
- protected override void LoadViewState(object savedState)
- {
- base.LoadViewState(savedState);
- if (ViewState["controsladded"] == null)
- j =(int) ViewState["Counter"] ;
- for (int i = 1; i <=j ; i++)
- {
- InsertComponet(i);
- }
- }
- }
- }