C# 自定义DropDownList服务器控件在回发时丢失项目

C# 自定义DropDownList服务器控件在回发时丢失项目,c#,asp.net,C#,Asp.net,我有一个从DropDownList继承的自定义服务器控件。回邮时,项目将丢失。它看起来像这样: public class MyClientSelectList : DropDownList { protected override void OnInit(EventArgs e) { base.OnInit(e); // design mode hack to let visual studio display in design

我有一个从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。我在承载此自定义服务器控件的页面的页面加载中选择一个选定值


为什么回发时项目丢失?

默认情况下EnableViewState已为True,因此mshsayem的解决方案将无法工作。 有两种方法可以做到这一点,一种标准的方法是重写SaveControlState和LoadControlState方法 提到
另一种方法是,在Init中,无论是否回发,都从数据库重新加载列表项,然后从post数据中检索所选值并将其设置回dropdownlist