2012-02-19 10 views
0

最初のドロップダウンリストから選択した後に2番目のドロップダウンリストが変更されるため、SQL値が2のドロップダウンリストもありますので、2番目のドロップダウンリスト値をクリアしてください最初のドロップダウンリストをクリアした後、私の初期値は表示されません。削除後のドロップダウンリストの値を更新する

最初のドロップダウン:

<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> 

2番目のドロップダウンは:

<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

私はすべての最後の値を表示しています –

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部分のみを使用します。DataBind();アイテムをクリアする必要はありません。 :この場合はyou're causing double operationです。これは、DataSourceコントロールがコントロールをバインドするためです。

希望します。

関連する問題