2012-12-10 85 views
0

我有一个从DropDownList继承的自定义服务器控件。回发时,物品丢失。它看起来像这样:自定义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

向我们显示您的标记... – IrishChieftain

回答

1

默认情况下EnableViewState已为True,因此mshsayem的解决方案将无法工作。 有很2的方式来做到这一点,一个标准的方法是重写SaveControlState和LoadControlState的方法 参考http://msdn.microsoft.com/en-us/library/1whwt1k7(v=VS.100).aspx
另一种方法是,在初始化,重新从数据库列表中的项目无论是回传与否,然后检索选定来自发布数据的价值并将其重新设置为下拉列表

相关问题