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