当前位置: 代码迷 >> ASP.NET >> gridview中应用itemplate中的自定义控件为什么在postback后控件没有了
  详细解决方案

gridview中应用itemplate中的自定义控件为什么在postback后控件没有了

热度:596   发布时间:2013-02-26 00:00:00.0
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)
正解!
  相关解决方案