我必须进行脑力衰退,但我不能让两个依赖的下拉工作。
在页面加载事件中,如果这不是回发,我在第一个下拉列表中设置值。在此下拉列表的selectedindexchanged事件中,我将清除第二个下拉列表并根据第一个下拉列表中的值添加项目。这些项目是手动添加的,不使用数据绑定。
如果我单步执行代码,我可以看到第二个下拉列表被清除,并且项目被添加到其中。但是,它们不会出现在网页中 - 第二个下拉列表仍为空。
帮助
感谢所有建议。我发现了这个问题。该页面使用Infragistics异步面板进行ajax回发。这导致了这个问题。
答案 0 :(得分:0)
如果不是IsPostBack,请尝试填充Page_Init中的控件。
答案 1 :(得分:0)
这是我对你所描述内容的简化解释。
标记:
<form id="form1" runat="server">
<div>
<asp:ListBox ID="lbFirst" runat="server" AutoPostBack="True" onselectedindexchanged="lbFirst_SelectedIndexChanged">
</asp:ListBox>
<asp:ListBox ID="lbSecond" runat="server">
</asp:ListBox>
</div>
</form>
这是背后的代码:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
lbFirst.Items.Add(new ListItem("Cars", "cars", true));
lbFirst.Items.Add(new ListItem("Trucks", "trucks", true));
}
}
protected void lbFirst_SelectedIndexChanged(object sender, EventArgs e)
{
lbSecond.Items.Clear();
lbSecond.Items.AddRange(GetListItems(lbFirst.SelectedValue));
}
private ListItem[] GetListItems(string value)
{
var items = new List<ListItem>();
if(value == "cars")
{
items.Add(new ListItem("Camry"));
items.Add(new ListItem("Civic"));
items.Add(new ListItem("Camry"));
}
if(value == "trucks")
{
items.Add(new ListItem("Tundra"));
items.Add(new ListItem("Ford F150"));
items.Add(new ListItem("Ranger"));
}
return items.ToArray();
}
}
这完全符合预期的效果。你的代码看起来像这样,还是我错过了什么?如果你能发表评论,我会非常乐意进一步提供帮助。