aspx ページに 3 つのドロップダウン リストがあります。最初のものは 4 つの値でハードコードされています。2番目のものは、プログラムで入力する必要があります。最初のドロップダウンで「Product1」を選択すると、2 番目のドロップダウンに「Model1_1」、「Model1_2」などの値が入力されます。"Product2" を選択すると、2 番目のドロップダウンに "Model2_1"、"Model2_2" が入力されます)。
助けてもらえますか?
aspx ページに 3 つのドロップダウン リストがあります。最初のものは 4 つの値でハードコードされています。2番目のものは、プログラムで入力する必要があります。最初のドロップダウンで「Product1」を選択すると、2 番目のドロップダウンに「Model1_1」、「Model1_2」などの値が入力されます。"Product2" を選択すると、2 番目のドロップダウンに "Model2_1"、"Model2_2" が入力されます)。
助けてもらえますか?
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")
{
....
}
}
この質問に対する解決策を 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");
....
}
次の方法で 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を忘れないでください。