我现在的项目要做: 
gridview里面的列要动态的,并且能够单击单元格进行编辑 
我的做法: 
用LoadTemplate("ItemTemplate.ascx")动态的加载模板列,在模板列里面放入一个lable和一个textbox,分别作为显示控件和修改控件用,在点击可编辑的单元格是就将lable隐藏且textbox显示。 
存在问题: 
由于动态加载的模板列在页面刷新之后就不存在了,必须每次刷新都要先把上次加载的模板列从gridview里面用GridView1.Columns.RemoveAt删除掉,再重新动态加载模板列,然后获取模板列里面的lable和textbox并且绑定数据! 
而且这个Gridview里面要实现treeview类似的功能,我需要在第一列用静态模板列来实现。 
结果发现页面刷新几次的时候,第一列静态模板列里面的控件就会丢失,在debug之后发现只有用了GridView1.Columns.RemoveAt之后才会出现信息丢失,google发现此网址http://blog.tostudy.com.cn/blog/show.aspx?aid=1161有相同情况,只要是对GridView的Columns调用Remove、RemoveAt、Clear等方法,上面的情况就会出现。应当是GridView的一个Bug,估计应当是调用这些方法之后,没有正确的更新ViewState值,导致Columns集合中的对象与ViewState值出现不匹配,这样在页面重新PostBack时,生成的Columns对象中导致TemplateField信息丢失。 
按照上面的提示,我发现: 
就算再把第一列静态模板列用动态加载模板列的方法实现,可以用 
CommandName= "command",在Gridview里面rowcommand里面获取点击事件,但是不能加入CommandArgument='<%#Container.DataItemIndex %>'来获取点击的行索引,这就导致项目无法继续进行了 
ps:这种实现方法,效率太低了,就算成功了也不好!不知道那位高人有没有更好的办法实现能动态加载模板列,还能点击单元格修改的方法,请不吝赐教!先行谢过!

解决方案 »

  1.   

    http://www.cnevan.com/blog/showlog.asp?log_id=518
      

  2.   

    http://blog.csdn.net/lee576/archive/2008/10/29/3173798.aspx
      

  3.   

    帮LZ顶,希望LZ可以可以解http://topic.csdn.net/u/20081117/19/f22ad17a-3d7e-47d3-b855-a64212a5f265.html答一下我的问题:
      

  4.   

    楼主。我也看过在模板列里面放入一个lable和一个textbox,分别作为显示控件和修改控件用,在点击可编辑的单元格是就将lable隐藏且textbox显示。 这种方法实现单元格编辑,我想做的是datalist中嵌套gridview.并实现gridview的单元格编辑。。没弄成。然后又想自己写个table代替datalist,并在table中动态生成gridview,设置gridview.可是鼠标点击事件后回发,如果生成table的方法放在(!IsPostBack)中,那点击后布面空白,不放在(!IsPostBack)中,那每次回发都重新生成table.那gridview的rowcommand事件又执行不了,实现不了对gridview的编辑。这问题真头疼