2012-09-04 254 views
4

可能重複填充下拉列表:
Populate one dropdown based on selection in another基於另一個下拉列表中

我有我的aspx頁面上3下拉列表中。第一個硬編碼有4個值。第二個應該以編程方式填充,例如。如果我在第一個下拉列表中選擇「Product1」,則應該使用「Model1_1」,「Model1_2」等值填充第二個下拉列表。如果我選擇「Product2」,則第二個下拉列表中填入「Model2_1」,「Model2_2」)。

你能給我一些幫助嗎?

+0

忘記Enable AutoPostBack我發現它也如同,但下拉列表中填充來自SQL數據庫。謝謝 –

回答

4

1在第一個DropDownList1上設置AutoPostBack="true"並添加OnSelectIndexChanged="YourDelegate"

2在你的委託當您發佈的數據,與前綴的SelectedValue

protected void DropDownList_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    var value = DropDownList1.SelectedValue; 
    if(value == "Product1") 
    { 
    ....  
    } 
    else if(value == "Product2") 
    { 
    ....  
    } 
} 
3

我能說出2個解決這一問題,結合你的第二個DropDownList2。

第一個涉及使用AJAX工具包中的Cascading Drop Down for ASP.NET頁面。 你有這裏的參考和一個例子: http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx 這是不知何故cleaner它不會導致回發,但你必須使用該工具包。但學習使用它很好,因爲它提供了其他好的設施。

第二個涉及爲您的DropDownList添加OnSelectedIndexChange事件的處理程序。因此,當用戶從第一個下拉列表中選擇一個值時,服務器端會捕獲該事件並使用必要的值填充第二個DropDown。由於這需要服務器端操作,因此在做出選擇後重新加載頁面可能相當麻煩。 客戶端應該是這樣的:

<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"); 
    .... 
} 
+0

謝謝@Coral Doe! –

2

您可以通過此方法來填充第二DRP(DropDownList中): 連接1號DRP與表,它調用此查詢:(在SQLDataSource1)

SELECT [id], [name] FROM Products 

在第二DRP你應該調用(在SQLDataSource2)

SQLDataSource2 select command地產
SELECT [id], [name] FROM Models WHERE [email protected]_id 

添加參數值Product_id它必須是drp1.SelectedValue

注意:不要爲DRP1

+0

謝謝@eminach! –

相關問題