ASP.NET中的依赖性下降

时间:2009-08-05 10:36:24

标签: asp.net

我必须进行脑力衰退,但我不能让两个依赖的下拉工作。

在页面加载事件中,如果这不是回发,我在第一个下拉列表中设置值。在此下拉列表的selectedindexchanged事件中,我将清除第二个下拉列表并根据第一个下拉列表中的值添加项目。这些项目是手动添加的,不使用数据绑定。

如果我单步执行代码,我可以看到第二个下拉列表被清除,并且项目被添加到其中。但是,它们不会出现在网页中 - 第二个下拉列表仍为空。

帮助

更新

感谢所有建议。我发现了这个问题。该页面使用Infragistics异步面板进行ajax回发。这导致了这个问题。

2 个答案:

答案 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();
    }
}

这完全符合预期的效果。你的代码看起来像这样,还是我错过了什么?如果你能发表评论,我会非常乐意进一步提供帮助。