C# 基于另一个下拉列表填充下拉列表

C# 基于另一个下拉列表填充下拉列表,c#,C#,可能重复: 我的aspx页面上有3个下拉列表。第一个是用4个值硬编码的。第二个应该以编程方式填充,例如。如果我在第一个下拉列表中选择“Product1”,那么第二个下拉列表应该填充类似“Model1_1”、“Model1_2”的值。如果选择“Product2”,则第二个下拉列表将填充“Model2\u 1”、“Model2\u 2”) 您能给我一些帮助吗?1在第一个下拉列表1上设置AutoPostBack=“true”,并在SelectIndexchanged=“YourDelegate”上添

可能重复:

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

您能给我一些帮助吗?

1在第一个下拉列表1上设置
AutoPostBack=“true”
,并在SelectIndexchanged=“YourDelegate”上添加

2在代理中发布数据时,使用前缀SelectedValue绑定第二个DropDownList 2

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

我可以列举两种解决这个问题的方法

第一个涉及到使用AJAX工具包中用于ASP.NET页面的级联下拉列表。 这里有参考资料和示例: 它在某种程度上更干净,而且不会导致回发,但您必须使用该工具包。但是学会使用它是很好的,因为它为其他人提供了很好的设施

第二个涉及为DropDownList添加OnSelectedIndexChange事件的处理程序。因此,当用户从第一个下拉列表中选择一个值时,服务器端捕获事件并用必要的值填充第二个下拉列表。由于这需要服务器端操作,因此在进行选择后重新加载页面可能会非常烦人。 客户端应如下所示:

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

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

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

SQLDataSource2
select命令
属性中,为
Product\u id
添加参数值,它必须是
drp1。SelectedValue


注意:不要忘记为drp1启用自动回发
,我也发现了类似的功能,但下拉列表是从SQL数据库填充的。谢谢你
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList2.Items.Clear();
    DropDownList2.Items.Add("text");
    ....
}
SELECT [id], [name] FROM Products
 SELECT [id], [name] FROM Models WHERE ProductID=@Product_id