Возникли проблемы при добавлении обработчика событий в динамически создаваемый выпадающий список

У меня есть следующий код в методе page_load файла CS:

                    DataSet data = new DataSet();
                    DataTable parent = new DataTable();
                    DataTable child = new DataTable();
                    //parse the xml here

                    parent.TableName = "Parent";
                    parent.Columns.Add("ID", typeof(int));
                    parent.Columns.Add("Name", typeof(string));
                    child.TableName = "ParentChild";
                    child.Columns.Add("ID", typeof(int));
                    child.Columns.Add("ParentID", typeof(int));
                    child.Columns.Add("ChildName", typeof(string));

                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.LoadXml(objDemo.ChildsList);
                    XmlNodeList objNL = xmlDoc.GetElementsByTagName("option");
                    int parentIndex = 0;
                    foreach (XmlNode objSingleNode in objNL)
                    {
                        parent.Rows.Add(parentIndex, objSingleNode.Attributes.GetNamedItem("name").InnerText);

                        XmlDocument xmlChildren = new XmlDocument();
                        xmlChildren.LoadXml(objSingleNode.InnerXml);
                        XmlNodeList objCL = xmlChildren.GetElementsByTagName("child");
                        int childIndex = 0;
                        foreach (XmlNode objSingleChild in objCL)
                        {
                            child.Rows.Add(childIndex, parentIndex, objSingleChild.InnerText);
                            childIndex++;
                        }
                        parentIndex++;
                    }

                    data.Tables.Add(parent);
                    data.Tables.Add(child);
                    data.Relations.Add("ParentChild", parent.Columns["ID"], child.Columns["ParentID"]);

                    bindingSource1 = new BindingSource();
                    bindingSource1.DataSource = data;
                    bindingSource1.DataMember = "Parent";

                    bindingSource2 = new BindingSource();
                    bindingSource2.DataSource = bindingSource1;
                    bindingSource2.DataMember = "ParentChild";

                    DropDownList lstList1 = new DropDownList();
                    lstList1.ID = "ParentList";
                    lstList1.SelectedIndexChanged += lstList1_SelectedIndexChanged;
                    lstList1.DataSource = bindingSource1;
                    lstList1.DataTextField = "Name";
                    lstList1.DataValueField = "Name";
                    lstList1.AutoPostBack = true;
                    lstList1.DataBind();

                    DropDownList lstList2 = new DropDownList();
                    lstList2.ID = "ChildList";
                    lstList2.DataSource = bindingSource2;
                    lstList2.DataTextField = "ChildName";
                    lstList2.DataValueField = "ChildName";
                    lstList2.DataBind();

                    this.dynamicControl.Controls.Add(
                        new LiteralControl(
                            "<tr><td width='220px' class='contentBoxLabel'>" + sbDisplayLabel + " - Country" + "</td><td>"));
                    this.dynamicControl.Controls.Add(lstList1);
                    this.dynamicControl.Controls.Add(new LiteralControl("</td></tr>\n"));

                    this.dynamicControl.Controls.Add(
                        new LiteralControl(
                            "<tr><td width='220px' class='contentBoxLabel'>" + sbDisplayLabel + "</td><td>"));
                    this.dynamicControl.Controls.Add(lstList2);

SelectedIndexChanged для lstList1 не работает, что означает, что функция lstList1_SelectedIndexChanged никогда не будет достигнута, мне нужно добавить это где-нибудь еще? Я попытался добавить его в часть IsPostBack Page_load, но у меня проблемы с поиском элемента управления. У меня сложилось впечатление, что мне нужен обработчик событий для обновления второго выпадающего списка, когда первый был выбран, это правильно?

1 ответ

Я думаю, что есть проблема в том, как вы регистрируете свой обработчик для события event следующим образом:

lstList1.SelectedIndexChanged += new EventHandler(lstList1_SelectedIndexChanged);
lstList1.AutoPostBack = true;

void lstList1_SelectedIndexChanged(object sender, EventArgs e)
{
    //your code 
}
Другие вопросы по тегам