【发布时间】:2013-03-18 17:53:20
【问题描述】:
我有两个下拉列表,其中一个在页面加载时填充,另一个应仅在第一个中选择值时填充。第一个下拉列表定义为:
<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 函数动态更新该下拉列表以用于另一个下拉列表?
【问题讨论】:
-
首先,当您向其中添加项目时,您不需要在第二个下拉列表中使用 Databind。并检查您的清单是否有任何价值?
-
@Samim 我不这么认为,这是在调试时添加的。我很肯定项目会被添加到列表中(单步执行并看到它们)。删除了那行代码以避免再次出现,谢谢。
-
“这不起作用”是什么意思?你期待什么,你看到了什么?第一个下拉菜单是否将 AutoPostBack 设置为 true?
-
@Igor UI 下拉列表未填充,即使我看到“secondary_ddl.Items.Add(...)”行被多次调用。
-
那么其他东西必须从中删除项目 - 无论是服务器端还是客户端。