.NET web窗体下拉列表在回发时重置

本文关键字:web 窗体 下拉列表 NET | 更新日期: 2023-09-27 18:22:17

我搜索了一堆类似的问题,并在谷歌上做了一些搜索,但我找不到问题的答案。。。

我想要一个由数据库中的类别填充的下拉列表。。。选择一个类别并点击submit后,网格视图将填充该类别中的所有项目。

现在,一切都正常,除了每当我在类别下拉框中选择任何内容时,它都会立即重置为第一个选择。因此,除了第一个值之外,我无法向网格视图提交任何其他值。我正在对此项目使用自动Postback。我也尝试过使用appenddatabounditems,但这只是用越来越多的相同条目填充了列表。。。

如果有人能告诉我如何在回发后让下载列表保持其位置,我会很高兴?

Selected Category:
    <asp:DropDownList ID="ddlCategory" runat="server" AutoPostBack="True" ViewStateMode="Enabled">
    </asp:DropDownList>
    <asp:Button ID="buttonCategorySubmit" runat="server" OnClick="buttonCategorySubmit_Click" Text="Submit" />
    <br />
</div>
    <asp:GridView ID="CategoryGridView" runat="server">
    </asp:GridView>
    <br />
 protected void Page_Load(object sender, EventArgs e)
    {
        PopulateCategorySelection();
    }
    public void PopulateCategorySelection()
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["ConnString"]);
        SqlCommand cmd = new SqlCommand("AllCategories", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        conn.Open();
        SqlDataReader ddlValues = cmd.ExecuteReader();
        ddlCategory.DataSource = ddlValues;
        ddlCategory.DataValueField = "CategoryID";
        ddlCategory.DataTextField = "Title";
        ddlCategory.DataBind();
        conn.Close();

    }
    protected void buttonCategorySubmit_Click(object sender, EventArgs e)
    {
        PopulateCategoryTable();
    }
    public void PopulateCategoryTable()
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["Connstring"]);
        SqlCommand cmd = new SqlCommand("SelectCategory", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@Selected", ddlCategory.SelectedItem.Value);
        conn.Open();
        SqlDataAdapter adapter = new SqlDataAdapter();
        DataSet ds = new DataSet();
        adapter = new SqlDataAdapter(cmd);
        adapter.Fill(ds);
        conn.Close();
        CategoryGridView.DataSource = ds.Tables[0];
        CategoryGridView.DataBind();
        conn.Close();
    }

.NET web窗体下拉列表在回发时重置

我真的只是解决了每个人。。。对于任何有相同问题的人,您需要在page_load方法中检查页面是否正在加载,是因为正在生成新页面,还是只是为用户发回信息。如果只是回发,我们不想再次填充类别下拉框。因此,我们在page_load方法中使用IsPostBack对象,如下所示:

 if (!IsPostBack) 
        {
            PopulateCategorySelection();
        }