我有一个继承自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 . 我在托管此自定义服务器控件的页面的页面加载中选择了一个选定的值 .
为什么在回发时丢失了这些物品?
1 回答
默认情况下EnableViewState已经为True,所以mshsayem 's solution will not work. There' re 2方式做到这一点,标准方法是覆盖SaveControlState和LoadControlState方法参考http://msdn.microsoft.com/en-us/library/1whwt1k7(v=VS.100).aspx
另一种方法是,在Init中,重新加载数据库中的列表项,无论是否回发,然后从发布数据中检索所选值并将其设置回下拉列表