UpdatePanel中的列表框不会第二次触发

时间:2018-09-13 09:15:29

标签: c# asp.net

下面的updatePanel中的列表框仅触发一次回发,例如,如果我在ddlroot上选择pre-Purchase,它将在ddlchild上加载适当的数据,但是如果我再次选择post-order,则它不会加载所需的数据。

 <asp:UpdatePanel ID="UpdatePanel5" ChildrenAsTriggers="true" runat="server">
 <Triggers>
 <asp:AsyncPostBackTrigger ControlID="ddlroot" EventName="TextChanged" />
 <asp:AsyncPostBackTrigger ControlID="ddlchild" EventName="Textchanged" />
 </Triggers>
 <ContentTemplate>
 <table>
 <tr>
 <td>
 <asp:ListBox ID="ddlroot" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlroot_SelectedIndexChanged">
 <asp:ListItem Value="pre-purchase" Text="Pre-Purchase"></asp:ListItem>
 <asp:ListItem Value="post-purchase" Text="Post-Purchase"></asp:ListItem>
 </asp:ListBox>
 </td>
 <td>
 <asp:ListBox ID="ddlchild" runat="server"></asp:ListBox>
 </td>
 </tr>
 </table>
 </ContentTemplate>
 </asp:UpdatePanel>

下面将是服务器端代码,其中将基于ddlroot选择从MySql数据库中获取数据,

    protected void ddlroot_SelectedIndexChanged(object sender, EventArgs e)
    {

        ddlchild.Items.Clear();

        string MyConString = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
        if (ddlroot.SelectedValue == "pre-purchase")
        {
            using (MySqlConnection conn = new MySqlConnection(MyConString))
            {

                using (MySqlCommand cmd1 = new MySqlCommand())
                {
                    cmd1.CommandText = "select distinct(prePurchase) from prepurchase WHERE prePurchase IS NOT NULL";
                    cmd1.Connection = conn;
                    conn.Open();
                    using (MySqlDataReader sdr1 = cmd1.ExecuteReader())
                    {
                        while (sdr1.Read())
                        {
                            ListItem item1 = new ListItem();
                            item1.Text = sdr1["prePurchase"].ToString();
                            item1.Value = sdr1["prePurchase"].ToString();
                            ddlchild.Items.Add(item1);
                        }
                    }
                    conn.Close();
                }
            }
        }
        else if(ddlroot.SelectedValue == "post-purchase")
        {
            using (MySqlConnection conn = new MySqlConnection(MyConString))
            {

                using (MySqlCommand cmd1 = new MySqlCommand())
                {
                    cmd1.CommandText = "select distinct(postPurchase) from prepurchase WHERE postPurchase IS NOT NULL";
                    cmd1.Connection = conn;
                    conn.Open();
                    using (MySqlDataReader sdr1 = cmd1.ExecuteReader())
                    {
                        while (sdr1.Read())
                        {
                            ListItem item1 = new ListItem();
                            item1.Text = sdr1["postPurchase"].ToString();
                            item1.Value = sdr1["postPurchase"].ToString();
                            ddlchild.Items.Add(item1);
                        }
                    }
                    conn.Close();
                }
            }
        }
        //UpdatePanel5.Update();

    }

我该如何解决?

0 个答案:

没有答案