首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2011-12-23 
gridview中使用itemplate中的自定义控件为什么在postback后控件没有了自己定义了一个itemplate,publicclas

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

热点排行
Bad Request.