gridview中使用itemplate中的自定义控件为什么在postback后控件没有了
自己定义了一个itemplate,
public class MutiSelectTemplate : ITemplate
{
public MutiSelectTemplate()
{
}
#region ITemplate 成员
public void InstantiateIn(Control container)
{
CheckBox checkbox= new CheckBox();
checkbox.ID = "SelectMutiWTD ";
container.Controls.Add(checkbox);
}
#endregion
}
在gridview中动态添加
private void BindGridViewCell(GridView gridView)
{
.....
TemplateField templateField = new TemplateField();
templateField.HeaderText = "选择 ";
templateField.ItemTemplate=new MutiSelectTemplate();
gridView.Columns.Add(templateField);
}
pageload语句
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindGridViewCell(GridView1);
//AddTemplateField(GridView1);
}
结果当postback后,itemplate的CheckBox不见了
如果将templateField.ItemTemplate=new MutiSelectTemplate();单独拿出来,放入AddTemplateField(GridView1);函数中,去掉上面Page_Load的注释就可以显示出来了,请问是什么原因???
------解决方案--------------------呵呵,你的控件状态没有保存,所以刷新以后就不见了;
去掉if (!IsPostBack)
正解!