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