0

System.Web.UI.WebControls.TemplateField から派生させて、カスタム チェックボックス テンプレート フィールドを作成しました。このフィールドのテンプレートは、ITemplate インターフェイスを実装するクラスを作成することによって作成されています。ページでポストバックが発生すると、チェックボックスの値が失われます。

これを一時的に機能させるために、ビューステートを使用してチェックボックスの状態をチェックボックス列に保存しましたが、アプリケーションで同じ方法でより多くのテンプレート フィールドを使用するため、これを完全に回避したいと考えています。

何か不足している場合はお知らせください。

コードは次のとおりです。

namespace MyControls
{
    public class CheckBoxTemplateField : TemplateField
    {
        public CheckBoxTemplateField()
        {
            this.HeaderTemplate = new CheckBoxTemplate();
            this.ItemTemplate = new CheckBoxTemplate();
        }
    }

    public class CheckBoxTemplate : ITemplate
    {
        public void InstantiateIn(Control container)
        {
            CheckBox chk = new CheckBox();
            container.Controls.Add(chk);
        }
    }
}

よろしく、 ガウラフ

4

1 に答える 1

0

チェックボックスは、ポストバックで値を維持する問題で知られています

1つの解決策は、その値を非表示のフィールドに保存し、サーバーで読み取ることです。

psこれはビューステートとは関係ありません.inputコントロールはビューステートに値を保存しません(「ontextchange」イベントを持つテキストボックスを除く)

于 2012-05-15T09:46:04.343 に答える