Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .net DropDownList在回发后被清除_C#_Asp.net - Fatal编程技术网

C# .net DropDownList在回发后被清除

C# .net DropDownList在回发后被清除,c#,asp.net,C#,Asp.net,这一整天都快把我逼疯了。我在这里看到过几次这个问题,基本上我有一个下拉列表,当下面的表单发生变化时,它会填充一个表单-基本的东西。在第一页加载时,一切正常,但当dropdownlist更改时,回发后它将完全为空,SelectedIndexChanged事件将永远不会触发。我相信这一切都指向了视图状态问题。这是密码 <%@ Control Language="C#" AutoEventWireup="true" CodeFile="EditUser.ascx.cs" Inherits="Co

这一整天都快把我逼疯了。我在这里看到过几次这个问题,基本上我有一个下拉列表,当下面的表单发生变化时,它会填充一个表单-基本的东西。在第一页加载时,一切正常,但当dropdownlist更改时,回发后它将完全为空,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();
    }
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
IEnumerable users=users();
UsersList.DataSource=用户;
UsersList.Items.Insert(0,newlistItem(“--Select User--”,“0”));
UsersList.DataBind();
}
}

在此方面的任何帮助都将不胜感激!我相信这很简单…

编辑:全新答案


是否在Page_Init事件中添加控件?在此之后,在添加动态添加的控件之前,ViewState将已经被解析并应用于页面上的控件。请参见:

也尝试在页面上添加EnableViewState

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

此外,回发上项目的顺序对于保留ViewState也很重要。
是否在回发后,某些控件可能丢失了一个?

感谢您的快速响应:)我担心,无论是否使用items集合,都会出现相同的问题。此外,列表在第一页加载时构建良好。在DDL上设置AppendDataBoundItems=“true”属性。但是,由于OP说在初始页面加载时没有问题,并且只在回发后看到意外行为,所以我认为这不是问题所在。我刚刚注意到这是一个用户控件。它是否被动态添加到页面?是的!这是一个问题吗?遗憾的是,我一直在尝试启用viewstate,但什么都没做。