清除下拉列表后更新其值

本文关键字:更新 下拉列表 清除 | 更新日期: 2023-09-27 18:25:10

我有两个带有sql值的下拉列表,它们也有初始值,第二个下拉列表在从第一个下拉列表中选择后会发生变化,所以我应该在第一个列表中发生变化后清除第二个下降列表值,但在清除第一个下降列表后,我的初始值没有出现。我应该在后台代码中做什么来显示清除后的初始值?

第一个下拉列表:

<asp:dropdown ID="OrderNo" runat="server"   MaxLength="0" style="display: inline;" 
AppendDataBoundItems="True" DataSourceID="OrderNo_SqlDS" DataTextField="OrderNo" 
DataValueField="OrderNo" onselectedindexchanged=" OrderNo_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Text="--Select One--" Value="" /></asp:dropdown>

第二个下拉菜单:

<asp:dropdown ID="Part" runat="server"   MaxLength="0" style="display: inline;" 
AppendDataBoundItems="True" DataSourceID="Part_SqlDS" DataTextField="Part" 
DataValueField="Part" onselectedindexchanged=" Part_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Text="--Select One--" Value="" /></asp:dropdown>

在我的后台代码中:

 protected void OrderNo_SelectedIndexChanged(object sender, EventArgs e)
    {
        Part.Items.Clear();
        Part.DataBind();
    }

清除下拉列表后更新其值

DropDownList控件中始终选择一个项目。您不应该从所选索引更改方法的下拉列表中清除元素。在进行数据绑定之前,请尝试设置数据源属性

    protected void OrderNo_SelectedIndexChanged(object sender, EventArgs e)
{
    Part.DataSourceID="Part_SqlDS"
    Part.DataBind();
}
  1. 您不需要使用OrderNo_SelectedIndexChanged来绑定第二个控件,因为第一个dropdownlist会导致回发。Once postback happens SqlDataSource controls automatically refreshes and bind数据到数据绑定控件。

  2. Your initial value disappears,因为您清除了所有项,并告诉控件取回数据(DataBind())。What happens is控件将仅从SqlDataSource获取数据,而不会从其他源获取数据。除非您这次使用代码隐藏再次添加,否则您的初始值将消失But the solution is:you don't need to clear items at all。我想你害怕重复项,但SqlDataSource控件不会发生这种情况,它会刷新数据,如果对源进行了更改,则只显示更改。

  3. If you insist in using the code仅使用部分。DataBind();您不需要清除项目注意:在这种情况下是you're causing double operation,因为DataSource控件无论如何都会绑定您的控件。

希望这能有所帮助!