5

重複の可能性:
別のドロップダウンの選択に基づいて 1 つのドロップダウンにデータを入力する

aspx ページに 3 つのドロップダウン リストがあります。最初のものは 4 つの値でハードコードされています。2番目のものは、プログラムで入力する必要があります。最初のドロップダウンで「Product1」を選択すると、2 番目のドロップダウンに「Model1_1」、「Model1_2」などの値が入力されます。"Product2" を選択すると、2 番目のドロップダウンに "Model2_1"、"Model2_2" が入力されます)。

助けてもらえますか?

4

3 に答える 3

5

AutoPostBack="true"1最初の DropDownList1 に設定し、追加しOnSelectIndexChanged="YourDelegate"ます。

2データを投稿するときにデリゲートで、2番目のDropDownList2をプレフィックスSelectedValueでバインドします

 protected void DropDownList_SelectedIndexChanged(object sender, EventArgs e)
 {
   var value =  DropDownList1.SelectedValue;
   if(value == "Product1")
   { 
    ....      
   }
   else if(value == "Product2")
   { 
    ....      
   }
 }
于 2012-09-04T07:45:19.333 に答える
4

この質問に対する解決策を 2 つ挙げることができます。

1 つ目は、ASP.NET ページ用の AJAX Toolkit から Cascading Drop Down を使用することです。ここに参照と例があります: http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx どういうわけかcleaner、ポストバックは発生しませんが、そのツールキットを使用する必要があります。しかし、他の人に素晴らしい機能を提供するので、それを使用することを学ぶことは素晴らしいことです.

2 つ目は、DropDownList に OnSelectedIndexChange イベントのハンドラーを追加することです。したがって、ユーザーが最初のドロップダウンから値を選択すると、サーバー側がイベントをキャッチし、2 番目のドロップダウンに必要な値を設定します。これにはサーバー側の操作が必要なため、選択後にページをリロードするのはかなり面倒です。クライアント側は次のようになります。

  <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack = true OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList>

サーバー側の場所:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList2.Items.Clear();
    DropDownList2.Items.Add("text");
    ....
}
于 2012-09-04T07:48:28.977 に答える
2

次の方法で 2 番目の drp (DropDownList) を設定できます: 最初の drp をテーブルに接続し、このクエリを呼び出します: (SQLDataSource1 内)

SELECT [id], [name] FROM Products

2番目のdrpで(SQLDataSource2で)呼び出す必要があります

 SELECT [id], [name] FROM Models WHERE ProductID=@Product_id

プロパティにSQLDataSource2 select commandパラメータ値を追加Product_idする必要がありますdrp1.SelectedValue

Enable AutoPostBack注: drp1を忘れないでください。

于 2012-09-04T07:50:53.353 に答える