0

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 を確認しました。このカスタム サーバー コントロールをホストしているページのページ ロードで、選択した値を選択します。

ポストバックでアイテムが失われるのはなぜですか?

4

1 に答える 1

1

EnableViewState は既定で既に True であるため、mshsayem のソリューションは機能しません。これには 2 つの方法があります。標準的な方法は、SaveControlState と LoadControlState メソッドをオーバーライドすることです。http://msdn.microsoft.com/en-us/library/1whwt1k7(v=VS.100).aspx を参照して ください
、初期化で、ポストバックの有無に関係なくデータベースからリスト項目をリロードし、選択した値をポストデータから取得してドロップダウンリストに戻します

于 2012-12-11T03:15:35.727 に答える