可能重复:
根据另一个下拉列表中的选择填充一个下拉列表
我的 aspx 页面上有 3 个下拉列表。第一个是用 4 个值硬编码的。第二个应该以编程方式填充,例如。如果我在第一个下拉列表中选择“Product1”,那么第二个下拉列表应该填充诸如“Model1_1”、“Model1_2”之类的值。如果我选择“Product2”,则第二个下拉列表将填充“Model2_1”、“Model2_2”)。
你能给我一些帮助吗?
可能重复:
根据另一个下拉列表中的选择填充一个下拉列表
我的 aspx 页面上有 3 个下拉列表。第一个是用 4 个值硬编码的。第二个应该以编程方式填充,例如。如果我在第一个下拉列表中选择“Product1”,那么第二个下拉列表应该填充诸如“Model1_1”、“Model1_2”之类的值。如果我选择“Product2”,则第二个下拉列表将填充“Model2_1”、“Model2_2”)。
你能给我一些帮助吗?
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")
{
....
}
}
我可以为这个问题命名 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");
....
}
您可以通过以下方式填充第二个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 AutoPostBack
drp1