我在timer_tick()子例程中每60秒从Access数据库填充一次datagrid。
Dim direction As SortOrder
.
.
.
DataGridView1 ColumnHeaderMouseClick代码:
direction = DataGridView1.SortOrder
MsgBox(direction.ToString())
现在,每隔一次点击就会显示降序,另一半则显示为“2”,只是提升数字。 有谁知道为什么会发生这种情况或如何解决它?
我尝试实现的是在timer tick()sub中自动重新加载datagrid后保留sortorder。
答案 0 :(得分:2)
我找到了答案: http://www.tek-tips.com/viewthread.cfm?qid=1617798
问题是这样的 DataGridView.SortOrder返回值为Windows.Forms.SortOrder (此变量类型将检索当前排序顺序)
同时
DataGridView.Sort()正在寻找System.ComponentModel.ListSortDirection的值 (此变量类型将设置新的排序顺序)
所以我们需要这样的东西:
columnXY = DataGridView1.SortedColumn
*' if no column set for sort use third one *
If columnXY Is Nothing Then
columnXY = DataGridView1.Columns(2)
End If
Dim SetSortOrder As ListSortDirection
Dim GridSortOrder As SortOrder
GridSortOrder = DataGridView1.SortOrder
If GridSortOrder = Windows.Forms.SortOrder.Ascending Then
SetSortOrder = ListSortDirection.Ascending
ElseIf GridSortOrder = Windows.Forms.SortOrder.Descending Then
SetSortOrder = ListSortDirection.Descending
ElseIf GridSortOrder = Windows.Forms.SortOrder.None Then
SetSortOrder = ListSortDirection.Ascending
Else : GridSortOrder = ListSortDirection.Ascending
MsgBox("not good")
End If
DataGridView1.DataSource = datasetXY.Tables(0)
DataGridView1.Sort(columnXY, SetSortOrder)
现在,datagrid中的项目将按相同的列保持排序,并在重新加载后按升序/降序排序。