在自定义模板字段中回发后复选框丢失状态
问题描述:
我通过从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解决方案是其值存储在隐藏fiesld和已知在服务器中读取它。
p.s.这与viewstate.input控件无关,并不保存它们在viewstate中的值(带有'ontextchange'事件的excpet文本框)
+0
隐藏字段或视图状态是类似的事情。我不想手动这样做,因为问题不仅限于复选框,我将来必须使用不同类型的模板字段,这些字段可能包含下拉菜单等。 – Gaurav
实际上我刚刚发现,构造函数中的ItemTemplate - 是获取TemplateField列以在回发中正确保留的唯一方法。我不得不看看你的代码的其余部分,以找出为什么你会丢失复选框的状态,但它适用于我。 –