ASP.net下拉列表刷新时多次填充

本文关键字:填充 刷新 net 下拉列表 ASP | 更新日期: 2023-09-27 18:26:34

我对这个琐碎的问题感到抱歉,但我在谷歌或我的参考书中找不到关于这方面的信息,这些信息准确地描述/解决了我的问题。

我在一个页面上有一些DropDownList控件,我正在用SQL表中的信息填充这些控件。刷新页面时,DropDownList不会丢失其旧值,而是会重新添加相同的值,因此现在它们是双重填充的。所有的功能仍然是一样的,但它使DropDownList控件看起来不那么整洁,显然是不需要的。

<asp:DropDownList ID="DropDownList2" runat="server" OnLoad="LoadDutchessSubjects"
            AppendDataBoundItems="true">

我的代码后面的LoadDutchesSubjects函数只是从SQL表中获取所有记录,并将它们加载到DDL:中

public void LoadDutchessSubjects(object sender, EventArgs e)
{
    string connectionString = SqlHelperClass.ConnectionString;
    DataTable subjects = new DataTable();
    using (SqlConnection con = new SqlConnection(connectionString))
    {
        con.Open();
        try
        {
            SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM cfhudson_counties ORDER BY County", con);
            adapter.Fill(subjects);
            DropDownList2.DataSource = subjects;
            DropDownList2.DataTextField = "County";
            DropDownList2.DataValueField = "County";
            DropDownList2.DataBind();
        }
        catch (Exception ex)
        {
            DropDownList2.Items.Insert(0, new ListItem("<ERROR: Occured in populating.>", "1"));
        }
        con.Close();
    }
    //Overall.Items.Insert(0, new ListItem("<Select Subject>", "0")); //(dev test)
}

我能在代码背后做些什么来防止这种情况发生吗?这与ASP.net状态和刷新/服务器端发生了什么有关吗?也许我们可以把这个问题变成一个更有用、更全面的解释,解释为什么会发生这种情况,因为我显然不理解ASP.net的一些重要内容。

ASP.net下拉列表刷新时多次填充

不要在回发时重新加载项目。它们保持在视图状态中

public void LoadDutchessSubjects(object sender, EventArgs e)
{
    if (IsPostback)
        return;
    string connectionString = SqlHelperClass.ConnectionString;
    DataTable subjects = new DataTable();