Please visit my new Web Site https://coderstechzone.com
In most of the cases developers need to add dynamic controls in asp.net application using code behind or runtime. Here in this article I will explain how one can add dynamically Asp.Net Server side DropdownList control in runtime and assign or handle SelectedIndexChanged event in asp.net using C# and VB.NET. Most of the developers claims that dynamic controls loose data after postback. But if you run this example program you will not face the problem. Don't wrap up the codes under page_laod event within not ispostback condition.
If you run the below example code and select any item from dynamically created DropdownList then you will get the below interface:
To add a asp.net server side DropdownList control when page is loaded, we need to write the below code segment under page_Load Event:
C# Code:protected void Page_Load(object sender, EventArgs e) { DropDownList ComboBox = new DropDownList(); ComboBox.ID = "ComboBox"; ComboBox.AutoPostBack = true; ComboBox.Items.Add(new ListItem("Year: 2010", "2010")); ComboBox.Items.Add(new ListItem("Year: 2011", "2011")); ComboBox.Items.Add(new ListItem("Year: 2012", "2012")); ComboBox.Items.Add(new ListItem("Year: 2013", "2013")); ComboBox.Items.Add(new ListItem("Year: 2014", "2014")); ComboBox.SelectedIndexChanged += new EventHandler(Dynamic_Method); this.form1.Controls.Add(ComboBox); }
Then add the below handler function:
private void Dynamic_Method(object sender, EventArgs e) { //Response.Write(((DropDownList)sender).SelectedIndex.ToString()); //Response.Write(Request.Form["ComboBox"]); DropDownList ComboBox=(DropDownList)sender; string sSTR = ""; sSTR = "</br>Selected Index: " + ComboBox.SelectedIndex.ToString(); sSTR += "</br>Selected Item: " + ComboBox.SelectedItem.Text.ToString(); sSTR += "</br>Selected Value: " + ComboBox.SelectedItem.Value.ToString(); Label lbl = new Label(); lbl.Text = sSTR; this.form1.Controls.Add(lbl); }
Note: If you want to read DropdownList selectedvalue from other control postback like button control then you can read the above dynamically created DropdownList selectedvalue in the following way:
Response.Write(Request.Form["ComboBox"]);
VB.Net Code:
Private Sub Dynamic_Method(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim ComboBox As DropDownList = CType(sender, DropDownList) Dim sSTR As String = "" sSTR = "</br>Selected Index: " + ComboBox.SelectedIndex.ToString() sSTR += "</br>Selected Item: " + ComboBox.SelectedItem.Text.ToString() sSTR += "</br>Selected Value: " + ComboBox.SelectedItem.Value.ToString() Dim lbl As Label = New Label() lbl.Text = sSTR Me.form1.Controls.Add(lbl) End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim ComboBox As DropDownList = New DropDownList() ComboBox.ID = "ComboBox" ComboBox.AutoPostBack = True ComboBox.Items.Add(New ListItem("Year: 2010", "2010")) ComboBox.Items.Add(New ListItem("Year: 2011", "2011")) ComboBox.Items.Add(New ListItem("Year: 2012", "2012")) ComboBox.Items.Add(New ListItem("Year: 2013", "2013")) ComboBox.Items.Add(New ListItem("Year: 2014", "2014")) AddHandler ComboBox.SelectedIndexChanged, AddressOf Dynamic_Method Me.form1.Controls.Add(ComboBox) End Sub
Hope now you can add runtime dynamically DropdownList control and also handle its all type of event using above code sample or example.