关于在Gridview中使用AutoGenerateColumns="true"后模板列总是排在第一列的处理。
情况说明:有人也许会觉得好笑,直接在Gridview中编辑列然后设定好数据,最后再放模板列不就OK了,不过,这里要说明下,有时候不使我们偷懒不想设定,而是没有办法设定
在这里,返回的数据源是ArrayList(实体类还是动态生成的)也好,DataTable(存储过程多表查询平凑的数据)也罢,里面有多少列数据都是从法知道的,这种情况
肯定是不能手动在Gridview中指定BoundFiled了。
好了,废话不多说,这里没有好的处理方法,只是用js做了下障眼法而已。
分析:也曾想过在后台动态添加模板列,但是一直没有好的效果。最后干脆就在页面加载完成后处理,大家也都看过页面的html源代码,Gridview最后生成的是一个Table而已,那
我们就从Table下手,我们可以把第一列隐藏起来,然后在每一行后面添加一列,也就是把第一列copy到最后一列。下面就行动吧。
Code如下:
页面代码:
后台代码:
关于动态类的创建,在后期也会贴上来,同时还有一个js版的用户自定义显示列的动能(尚未测试)
如有更好的方法,欢迎批评指正,谢绝无聊跟帖与留言。
新修改:在window.οnlοad=function()里
if(tb.rows[i].cells.length<=1) break;//防止分页出现tb.rows[i].cells[0]为空情况,这里要看分页怎么做,然后做相应的修改
获取GridView的Id 可以直接用<%= GridView1.ClientID %>