基于另一个下拉列表中的选定值动态填充下拉列表
问题描述:
我有两个下拉列表,其中一个在页面加载时填充,另一个只在第一个列表中选择一个值时填充。基于另一个下拉列表中的选定值动态填充下拉列表
<asp:DropDownList ID = "base_ddl" runat="server" ToolTip="Base" OnSelectedIndexChanged = "BaseSelected">
// snip...
</asp:DropDownList>
然后,第二下拉列表(secondary_ddl
)在OnSelectedIndexChanged
方法,BaseSelected
填充:作为第一个下拉列表中定义。
public void BaseSelected(object sender, EventArgs e)
{
if (base_ddl.SelectedValue == "-1")
{
secondary_ddl.Visible = false;
}
else
{
secondary_ddl.Items.Clear();
// extract information to populate dropdown here
// snip.
IList<InfoContainer> info = getInfoBasedOnSelected(base_ddl.Value);
foreach (InfoContainer i in info)
{
secondary_ddl.Items.Add(new ListItem(i.name, i.value));
}
}
}
这是不行的,这会导致这样一个问题:为什么?我如何动态更新OnSelectedIndexChanged
函数的下拉菜单?
答
1日设定的base_ddl
AutoPostBack="True"
属性,然后
secondary_ddl.Items.Clear();
IList<InfoContainer> info = getInfoBasedOnSelected(base_ddl.Value);
secondary_ddl.DataTextField = "name";
secondary_ddl.DataValueField = "value";
secondary_ddl.DataSource = info;
secondary_ddl.DataBind();
+0
AutoPostBack是必需的属性。添加解决了问题。谢谢 – Jim 2013-03-18 18:04:35
首先你不需要在第二个下拉数据绑定为你添加项目到它的。并检查你的清单是否有任何价值? – Zaki 2013-03-18 17:54:59
@Samim我不这么认为,这是在调试时添加的。我肯定项目会被添加到列表中(通过并看到它们)。删除了那行代码以避免再次出现,谢谢。 – Jim 2013-03-18 17:55:51
“这不起作用”是什么意思?你期望什么?你看到了什么?第一个下拉列表是否将AutoPostBack设置为true? – Igor 2013-03-18 17:57:20