2010-07-27 61 views
0

我正在使用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) 

但它不记得上回发时添加的列,所以我必须添加它们每一个回发。

有没有更好的实现方法?

回答

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) 
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 
+0

感谢您的回复.... 我使用的IsPostBack,但是这个代码是在Binddata方法..... 这就是所谓的数据绑定到DataGrid ... .... – Som 2010-07-29 12:25:29

+0

绑定数据被称为即使它不是一个回发,也回帖后... – Som 2010-07-29 12:27:15