我有一个继承自DropDownList的自定义服务器控件。在回发时,项目将丢失。它看起来像这样:
public class MyClientSelectList : DropDownList
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
// design mode hack to let visual studio display in design mode
if (!DesignMode)
{
if (!Page.IsPostBack)
{
this.Items.Add(new ListItem("Select an item..."));
// add more items from db
}
}
}
}
我检查了EnablePostBack = true。我在托管此自定义服务器控件的页面页面加载中选择了一个选定的值。
为什么这些项目会在回发时丢失?
答案 0 :(得分:1)
默认情况下,EnableViewState已经为True,因此mshsayem的解决方案无效。
有两种方法可以做到这一点,标准方法是覆盖SaveControlState和LoadControlState方法
请参阅http://msdn.microsoft.com/en-us/library/1whwt1k7(v=VS.100).aspx
另一种方法是,在Init中,重新加载数据库中的列表项,无论是否回发,然后从发布数据中检索所选值并将其设置回下拉列表