用AutoGenerateColumns = true操作GridView中的列的任何方法?

Rob*_*eal 7 asp.net gridview

如果AutoGenerateColumns = true,似乎没有办法操纵Gridview的列.这是我的情景:

我有一个通用的GridView,它根据用户选择的内容显示各种不同LINQ查询的结果.我喜欢AutoGenerateColumns的工作方式,我不需要指定所有的BoundField,TemplateField列等...

最重要的是,我还根据需要以编程方式添加其他列.以编程方式添加的列将呈现在自动生成列的左侧.如果我想将它们移到右边怎么办?

GridView.Columns.Count只计算那些编程的,而不是自动生成的,所以我不能重新排列我想要的列.我可以挂钩RowDataBound事件并在必要时"隐藏"某些东西,但我不能重新排列.

我是否只需要放弃AutoGeneratedColumns = true,并为每个查询使用BoundFields进行布局?有什么我能做的吗?

bre*_*dan 3

您可以像这样操作数据绑定上的内容:

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
Run Code Online (Sandbox Code Playgroud)

您必须创建自己的标头,但这非常可行。