【发布时间】:2012-05-15 07:23:44
【问题描述】:
我通过派生自 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);
}
}
}
问候, 高拉夫
【问题讨论】:
-
我实际上刚刚发现,做你在这里所做的——从 TemplateField 派生并在构造函数中设置 ItemTemplate——是让 TemplateField 列在回发时正确保留的唯一方法。我必须查看您的其余代码才能弄清楚您为什么会丢失复选框状态,但它对我有用。
标签: asp.net checkbox viewstate templatefield itemplate