5

可能重复:
根据另一个下拉列表中的选择填充一个下拉列表

我的 aspx 页面上有 3 个下拉列表。第一个是用 4 个值硬编码的。第二个应该以编程方式填充,例如。如果我在第一个下拉列表中选择“Product1”,那么第二个下拉列表应该填充诸如“Model1_1”、“Model1_2”之类的值。如果我选择“Product2”,则第二个下拉列表将填充“Model2_1”、“Model2_2”)。

你能给我一些帮助吗?

4

3 回答 3

5

1AutoPostBack="true"在第一个 DropDownList1 上设置并添加OnSelectIndexChanged="YourDelegate".

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 个解决方案。

第一个涉及使用 AJAX Toolkit for ASP.NET 页面中的 Cascading Drop Down。你有这里的参考资料和一个例子: 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");
    ....
}
于 2012-09-04T07:48:28.977 回答
2

您可以通过以下方式填充第二个drp(DropDownList):将第一个drp与表连接,该表调用此查询:(在SQLDataSource1中)

SELECT [id], [name] FROM Products

在第二个 drp 你应该调用(在 SQLDataSource2 中)

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

SQLDataSource2 select command属性中添加参数值,Product_id它必须是drp1.SelectedValue

注意:不要忘记Enable AutoPostBackdrp1

于 2012-09-04T07:50:53.353 回答