清除后更新下拉列表的值

时间:2012-02-19 14:04:35

标签: c# asp.net .net

我有2个下拉列表,其sql值也具有初始值,第二个下拉列表在从第一个下拉列表中选择后发生更改所以我应该在第一个更改发生后清除第二个下拉列表值但是在清除第一个下拉列表之后list我的初始值没有显示我应该在后面的代码中做什么来清除后显示我的初始值?

第一次下拉:

<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();
    }

2 个答案:

答案 0 :(得分:0)

始终在DropDownList控件中选择一个项目。您不应该从选定的索引更改方法的下拉列表中清除元素。在进行数据绑定

之前,请尝试设置数据源属性
    protected void OrderNo_SelectedIndexChanged(object sender, EventArgs e)
{
    Part.DataSourceID="Part_SqlDS"
    Part.DataBind();
}

答案 1 :(得分:0)

  1. 您不需要使用OrderNo_SelectedIndexChanged绑定第二个控件,因为第一个下拉列表会导致回发。 Once postback happens SqlDataSource controls automatically refreshes and bind数据用于数据控制。

  2. Your initial value disappears因为您清除了所有项目,并告诉控件获取数据(DataBind())。 What happens is控件将仅从SqlDataSource获取数据,而不从其他源获取。除非您使用后面的代码再次添加它,否则您的初始值将消失。 But the solution isyou don't need to clear items at all 。我认为你害怕重复的项目但是这不会发生在SqlDataSource控件上,它会刷新数据,如果对源只做了更改,那么只会出现更改。

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

  4. 希望这有帮助!