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

问题描述:

我通过从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

实际上我刚刚发现,构造函数中的ItemTemplate - 是获取TemplateField列以在回发中正确保留的唯一方法。我不得不看看你的代码的其余部分,以找出为什么你会丢失复选框的状态,但它适用于我。 –

复选框与他们的问题保持其价值在回发

1解决方案是其值存储在隐藏fiesld和已知在服务器中读取它。

p.s.这与viewstate.input控件无关,并不保存它们在viewstate中的值(带有'ontextchange'事件的excpet文本框)

+0

隐藏字段或视图状态是类似的事情。我不想手动这样做,因为问题不仅限于复选框,我将来必须使用不同类型的模板字段,这些字段可能包含下拉菜单等。 – Gaurav