Create Dynamic Dropdownlist Controls and related event
--------------------------------------------------------------------------------
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 selectedvalecha nge event
Here is all my code.
any idea???
--------------------------------------------------------------------------------
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 selectedvalecha nge event
Here is all my code.
any idea???
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 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);
}
}
}
}