2012-02-19 51 views
0

我有2個下拉列表與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(); 
    } 

回答

0

的項目在DropDownList控制始終被選中。您不應該從選定索引更改方法的下拉列表中清除元素。嘗試設置數據源屬性,你做數據綁定

protected void OrderNo_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Part.DataSourceID="Part_SqlDS" 
    Part.DataBind(); 
} 
+0

它不會改變因爲沒有清除它顯示我所有的最後值 – 2012-02-20 05:53:57

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 use only part.DataBind();你不需要清除項目。 注意:在這種情況下,you're causing double operation,因爲無論如何DataSource控件將綁定您的控件。

希望這有助於!