如何动态地重新排序数据网格中的列?

时间:2010-07-27 21:15:19

标签: asp.net datagrid

我正在使用autogeneratecolumns ="false"并使用一些模板字段。

我使用时可以使用:

tempColumnNew = Me.DataGrid.Columns(oldColIndex)
tempColumnOld = Me.DataGrid.Columns(newColIndex)

Me.DataGrid.Columns.RemoveAt(oldColIndex)
Me.DataGrid.Columns.RemoveAt(newColIndex)

Me.DataGrid.Columns.AddAt(oldColIndex, tempColumnOld)
Me.DataGrid.Columns.AddAt(newColIndex, tempColumnNew)

但是它不记得回发中添加的列,所以我必须为每个回发添加它们。

有没有更好的方法来实现它?

2 个答案:

答案 0 :(得分:0)

您是否在Page_Load事件上使用IsPostBack

If Not IsPostBack Then
  tempColumnNew = Me.DataGrid.Columns(oldColIndex)
  tempColumnOld = Me.DataGrid.Columns(newColIndex)

  Me.DataGrid.Columns.RemoveAt(oldColIndex)
  Me.DataGrid.Columns.RemoveAt(newColIndex)

  Me.DataGrid.Columns.AddAt(oldColIndex, tempColumnOld)
  Me.DataGrid.Columns.AddAt(newColIndex, tempColumnNew)
End If

答案 1 :(得分:0)

                    This code worked for me:
                    oldColIndex = Me.DataGrid.Columns.IndexOf(col)
                    tempColumnNew = Me.DataGrid.Columns(oldColIndex)
                    tempColumnOld = Me.DataGrid.Columns(newColIndex)

                    Me.DataGrid.Columns.AddAt(oldColIndex, tempColumnOld)
                    Me.DataGrid.Columns.RemoveAt(oldColIndex + 1)
                    Me.DataGrid.Columns.AddAt(newColIndex, tempColumnNew)
                    Me.DataGrid.Columns.RemoveAt(newColIndex + 1)