读书人

gridview中应用itemplate中的自定义控

发布时间: 2011-12-23 23:32:01 作者: rapoo

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)
正解!

读书人网 >asp.net

热点推荐