我现在的项目要做:
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:这种实现方法,效率太低了,就算成功了也不好!不知道那位高人有没有更好的办法实现能动态加载模板列,还能点击单元格修改的方法,请不吝赐教!先行谢过!
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:这种实现方法,效率太低了,就算成功了也不好!不知道那位高人有没有更好的办法实现能动态加载模板列,还能点击单元格修改的方法,请不吝赐教!先行谢过!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货