Asp.net 在自定义模板字段中回发后复选框丢失的状态
通过从System.Web.UI.WebControl.TemplateField派生,我创建了一个自定义复选框模板字段。此字段的模板是通过创建一个实现ITemplate接口的类创建的。当页面上发生任何回发时,复选框中的值将丢失 为了暂时解决这个问题,我使用viewstate将复选框的状态存储在checkbox列中,但更进一步,我希望完全避免这种情况,因为我将在应用程序中以相同的方式使用更多模板字段 如果我遗漏了什么,请告诉我 代码如下: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
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列的唯一方法。我必须查看您的代码的其余部分,以找出为什么您会丢失复选框状态,不过,这对我来说是可行的。