我開發一個自定義服務器控件,以下是控制的我的ASPX頁面上的標記,ASP.net Web服務器控件,孩子不是maintenaing狀態
<uc:NoteBook ID="nb1" runat="server">
<NotePages>
<uc:NotePage ID="p1" runat="server">
<asp:DropDownList ID="ddl1" runat="server"></asp:DropDownList>
</uc:NotePage>
</NotePages>
</uc:NoteBook>
注意,該控件有NotePages
財產實際上是一個收集NotePage
控制權。而且控制可以有任何類型的孩子。
在同一個aspx頁面,在Page_Load
事件處理程序,我加載某些項目在DropDownList
控制,
if (!this.IsPostBack)
{
this.ddl1.Items.Add(new ListItem("Class-1", "C1"));
this.ddl1.Items.Add(new ListItem("Class-2", "C2"));
this.ddl1.Items.Add(new ListItem("Class-3", "C3"));
}
問題:
現在的問題是後回傳,該DropDownList
項目得到清除。這清楚地表明我錯過了一些州的管理。
任何人都可以請指導我如何處理它?
以下是控制代碼。
public class NoteBook : CompositeControl
{
[PersistenceMode(PersistenceMode.InnerProperty)]
public virtual List<NotePage> NotePages
{
get;
set;
}
public NoteBook()
{
this.NotePages = new List<NotePage>();
}
protected override void CreateChildControls()
{
foreach (var c in this.NotePages)
{
this.Controls.Add(c);
}
base.CreateChildControls();
}
}
[ParseChildren(false)]
public class NotePage : UserControl
{
}
感謝。
感謝您的回答肯,你說的DropDownList項目?如果是,那麼我認爲我們不應該每次都添加項目(GET/POST),那麼ViewState的意義何在? – sallushan