如果AutoGenerateColumns = true,似乎没有办法操纵Gridview的列.这是我的情景:
我有一个通用的GridView,它根据用户选择的内容显示各种不同LINQ查询的结果.我喜欢AutoGenerateColumns的工作方式,我不需要指定所有的BoundField,TemplateField列等…
最重要的是,我还根据需要以编程方式添加其他列.以编程方式添加的列将呈现在自动生成列的左侧.如果我想将它们移到右边怎么办?
GridView.Columns.Count只计算那些编程的,而不是自动生成的,所以我不能重新排列我想要的列.我可以挂钩RowDataBound事件并在必要时“隐藏”某些内容,但我无法重新排列.
我是否只需要放弃AutoGeneratedColumns = true,并为每个查询使用BoundFields进行布局?有什么我可以做的吗?
解决方法
你可以操作像这样绑定的数据:
Private Sub MyGrid_RowDataBound(ByVal sender As Object,ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles Me.RowDataBound If Me.AutoGenerateColumns = True Then If e.Row.RowType = DataControlRowType.DataRow Then e.row.cells.add(some code here to add your special column) End If End If End Sub
你必须创建自己的标题,但它是非常可行的.