0

我通过从 System.Web.UI.WebControls.TemplateField 派生创建了一个自定义复选框模板字段。该字段的模板是通过创建一个实现 ITemplate 接口的类来创建的。当页面上发生任何回发时,复选框中的值将丢失。

为了让这个临时工作,我使用 viewstate 将复选框的状态存储在复选框列中,但更进一步,我想完全避免这种情况,因为我将在我的应用程序中以相同的方式使用更多模板字段。

如果我遗漏了什么,请告诉我。

以下是代码:

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

复选框因其在回发中保持其价值的问题而闻名

一种解决方案是将其值存储在隐藏字段中并在服务器中读取它。

ps这与viewstate无关。输入控件不会将它们的值保存在viewstate中(excpet文本框有'ontextchange'事件)

于 2012-05-15T09:46:04.343 回答