在自定义模板字段中回发后复选框的状态丢失

时间:2012-05-15 07:23:45

标签: asp.net checkbox viewstate templatefield itemplate

我已经从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);
        }
    }
}

此致 拉夫

1 个答案:

答案 0 :(得分:0)

复选框已知其问题在回发中保持其值

1解决方案是将其值存储在隐藏的fiesld中并在服务器中读取它。

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