2010-07-08 50 views
1

這一直讓我瘋狂一整天。我已經看到這個問題在這裏出現了幾次,基本上我有一個下拉列表,當它被改變時填充下面的表單 - 基本的東西。在第一頁加載一切都很好,但是當下拉列表發生變化時,在回發和SelectedIndexChanged事件從不觸發後它完全是空白的。我相信這一切都指向視圖狀態問題。下面的代碼...net DropDownList在回發後被清除

<%@ 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(); 
    } 
} 

任何幫助將非常感激!我敢肯定,這是簡單的東西...

回答

3

編輯:完全新的答案...

你添加在Page_Init事件的控制?任何晚於此的ViewState都將被分析並應用到頁面上的控件,然後添加動態添加的控件。看到這一點:http://msdn.microsoft.com/en-us/library/ms178472.aspx

+0

感謝您的快速回復:)恐怕發生同樣的問題或不收集物品收集。另外,該列表在第一頁加載時可以很好地構建。 – Chris 2010-07-08 14:40:06

+0

您可以合併2.在DDL上設置AppendDataBoundItems =「true」屬性。但是,由於OP說在初始頁面加載時很好,並且在回發之後只能看到意外的行爲,所以我不認爲這是問題。 – 2010-07-08 14:43:11

+0

我剛剛注意到這是一個用戶控件。它是否被動態添加到頁面中? – 2010-07-08 14:47:00

0

嘗試添加的EnableViewState上的Page指令也

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

此外,在回傳的項目的順序是重要的是保持ViewState中。 它可能是,回發後,一些控制bevore,一個失蹤?

+0

可悲的是我試圖啓用視圖狀態一直向上鏈,它什麼都沒做。 – Chris 2010-07-08 14:48:54