The selected selectedexchanged event does not fire when I select the values ββin my lists. These drop-down lists are dynamically implemented in the following code. I tried to change the autorun options and enableviewstate to no avail. I am using a static panel. Does anyone see how I can raise a selectedexexchanged event to fire?
using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Diagnostics; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using ADONET_namespace; namespace AddFileToSQL { public partial class DataMatch : _Default { protected System.Web.UI.WebControls.PlaceHolder phTextBoxes; protected System.Web.UI.WebControls.PlaceHolder phDropDownLists; protected System.Web.UI.WebControls.Button btnAnotherRequest; protected System.Web.UI.WebControls.Panel pnlCreateData; protected System.Web.UI.WebControls.Literal lTextData; protected System.Web.UI.WebControls.Panel pnlDisplayData; //Panel pnlDropDownList; protected static string inputfile2; static string[] headers = null; static string[] data = null; static string[] data2 = null; static DataTable myInputFile = new DataTable("MyInputFile"); static string[] myUserSelections; // a Property that manages a counter stored in ViewState protected int NumberOfControls { get { return (int)ViewState["NumControls"]; } set { ViewState["NumControls"] = value; } } public void EditRecord(object recordID) { SelectedRecordID = recordID; // Load record from database and show in control } protected object SelectedRecordID { get { return ViewState["SelectedRecordID"]; } set { ViewState["SelectedRecordID"] = value; } } // Page Load private void Page_Load(object sender, System.EventArgs e) { if (!Page.IsPostBack) { this.NumberOfControls = 0; } } // Add DropDownList Control to Placeholder private void CreateDropDownLists() { for (int counter = 0; counter < NumberOfControls; counter++) { DropDownList ddl = new DropDownList(); SqlDataReader dr = ADONET_methods.DisplayTableColumns(targettable); ddl.ID = "DropDownListID" + (counter + 1).ToString(); ddl.DataTextField = "COLUMN_NAME"; ddl.DataValueField = "COLUMN_NAME"; ddl.DataSource = dr; ddl.DataBind(); //myUserSelections[counter] = ""; ddl.AutoPostBack = true; ddl.EnableViewState = true; //Preserves View State info on Postbacks ddl.Style["position"] = "absolute"; ddl.Style["top"] = 100 * counter + 80 + "px"; ddl.Style["left"] = 250 + "px"; ddl.SelectedIndexChanged += new EventHandler(SelectedIndexChanged); pnlDisplayData.Controls.Add(ddl); pnlDisplayData.Controls.Add(new LiteralControl("<br><br><br>")); pnlDisplayData.Visible = true; // pnlDropDownList.FindControl(ddl.ID); dr.Close(); } } protected void SelectedIndexChanged(object sender, EventArgs e) { DropDownList ddl = (DropDownList)sender; string ID = ddl.ID; } // Add TextBoxes Control to Placeholder private void RecreateDropDownLists() { for (int counter = 0; counter < NumberOfControls; counter++) { DropDownList ddl = new DropDownList(); SqlDataReader dr = ADONET_methods.DisplayTableColumns(targettable); ddl.ID = "DropDownListID" + (counter + 1).ToString(); ddl.DataTextField = "COLUMN_NAME"; ddl.DataValueField = "COLUMN_NAME"; ddl.DataSource = dr; ddl.DataBind(); myUserSelections[counter] = ""; dr.Close(); ddl.AutoPostBack = true; ddl.EnableViewState = false; //Preserves View State info on Postbacks ddl.Style["position"] = "absolute"; ddl.Style["top"] = 100 * counter + 80 + "px"; ddl.Style["left"] = 250 + "px"; pnlDisplayData.Controls.Add(ddl); pnlDisplayData.Controls.Add(new LiteralControl("<br><br><br>")); } } // Create TextBoxes and DropDownList data here on postback. protected override void CreateChildControls() { // create the child controls if the server control does not contains child controls this.EnsureChildControls(); // Creates a new ControlCollection. this.CreateControlCollection(); // Here we are recreating controls to persist the ViewState on every post back if (Page.IsPostBack) { RecreateDropDownLists(); RecreateLabels(); } // Create these conrols when asp.net page is created else { PopulateFileInputTable(); CreateDropDownLists(); CreateLabels(); } // Prevent child controls from being created again. this.ChildControlsCreated = true; } // Read all the data from TextBoxes and DropDownLists protected void btnSubmit_Click(object sender, System.EventArgs e) { int cnt = FindOccurence("DropDownListID"); EditRecord("DropDownListID" + Convert.ToString(cnt + 1)); AppendRecords(); pnlDisplayData.Visible = false; } private int FindOccurence(string substr) { string reqstr = Request.Form.ToString(); return ((reqstr.Length - reqstr.Replace(substr, "").Length) / substr.Length); } } }
source share