.net DropDownList在回发后被清除

时间:2010-07-08 14:34:28

标签: c# asp.net

这一直让我疯狂。我已经看到这个问题在这里出现了几次,基本上我有一个下拉列表,当它被改变时填充下面的表格 - 基本的东西。在第一页加载一切都很好,但是当更改下拉列表时,它在回发后完全空白,并且SelectedIndexChanged事件永远不会触发。我相信这一切都指向了一个观点问题。这是代码..

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="EditUser.ascx.cs" Inherits="Controls_EditUser" %>
<asp:DropDownList OnSelectedIndexChanged="SelectedIndexChanged" AutoPostBack="true" ID="UsersList" EnableViewState="true"
    runat="server" DataTextField="EXTRANET_USER_EMAIL" DataValueField="EXTRANET_USER_ID">
</asp:DropDownList>

和页面加载......

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        IEnumerable<ExtranetUser> users = Users();
        UsersList.DataSource = users;
        UsersList.Items.Insert(0, new ListItem("-- Select User --", "0"));
        UsersList.DataBind();
    }
}

对此的任何帮助都将非常感谢!我确定这很简单...

2 个答案:

答案 0 :(得分:3)

编辑:完全新答案......

您是否在Page_Init事件中添加控件?在添加动态添加的控件之前,任何比此更晚的ViewState都已经被解析并应用于页面上的控件。请参阅:http://msdn.microsoft.com/en-us/library/ms178472.aspx

答案 1 :(得分:0)

尝试在Page指令上添加EnableViewState

<%@ Control Language="C#" EnableViewState="True" AutoEventWireup="true" CodeFile="EditUser.ascx.cs" Inherits="Controls_EditUser" %>

此外,回发项目的排序对于保留ViewState非常重要。 可能是,在回发之后,有些控制因为缺少了一个?