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

Asp.net 在自定义模板字段中回发后复选框丢失的状态,asp.net,checkbox,viewstate,templatefield,itemplate,Asp.net,Checkbox,Viewstate,Templatefield,Itemplate,通过从System.Web.UI.WebControl.TemplateField派生,我创建了一个自定义复选框模板字段。此字段的模板是通过创建一个实现ITemplate接口的类创建的。当页面上发生任何回发时,复选框中的值将丢失 为了暂时解决这个问题,我使用viewstate将复选框的状态存储在checkbox列中,但更进一步,我希望完全避免这种情况,因为我将在应用程序中以相同的方式使用更多模板字段 如果我遗漏了什么,请告诉我 代码如下: namespace MyControls { p

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

为了暂时解决这个问题,我使用viewstate将复选框的状态存储在checkbox列中,但更进一步,我希望完全避免这种情况,因为我将在应用程序中以相同的方式使用更多模板字段

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

代码如下:

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);
        }
    }
}
问候,,
已知Gaurav复选框在回发时无法保持其值

1解决方案是将其值存储在隐藏字段中,并在服务器中读取


p、 s.这与viewstate无关。输入控件不会将其值保存在viewstate中(具有“ontextchange”事件的excpet textbox)

隐藏字段或viewstate是类似的事情。我不想手动操作,因为问题不限于复选框,我必须在将来使用不同类型的模板字段,这些字段可能包含下拉列表等。我实际上刚刚发现,执行您在这里所做的操作—从TemplateField派生并在构造函数中设置ItemTemplate—是在回发时正确保留TemplateField列的唯一方法。我必须查看您的代码的其余部分,以找出为什么您会丢失复选框状态,不过,这对我来说是可行的。