[英]How to tell what is the current sort direction of datagridview column?
因此,我目前正在处理一个带有大量列标题的datagridview表。 我希望标题文本以“真正”为中心(没有排序图标)。 因此,我删除了排序功能,而是编写代码,以便单击列标题时,是否以一种方式(升序)进行排序,而以另一种方式(降序)对其进行排序。
问题:是否有一种属性或简单的方法可以判断当前列的排序方式? 我有字符串和整数列。
Private Sub CameraTable_ColumnHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles cameraTable.ColumnHeaderMouseClick
'in case edits aren't committed
If cameraTable.IsCurrentRowDirty Or cameraTable.IsCurrentCellInEditMode Then
cameraTable.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
Dim selectedColumn As DataGridViewColumn = _
cameraTable.Columns(e.ColumnIndex)
'pseudo code
if selectedcolumn.isDesecnding() then
cameraTable.Sort(selectedColumn, System.ComponentModel.ListSortDirection.Ascending)
End if
End Sub
由于整个DGV只能按一列或另一列排序,因此您无需具有基于列的LastSort类型设置或属性。 也就是说,列并非独立于网格进行排序。
如果您自己处理排序, SortedColumn
需要模仿SortedColumn
的标准SortedColumn
和SortedOrder
属性。 如果您自己进行排序,我不确定DGV是否会更新这些内容。
Public Sub SortBy(colIndex As Integer, sortOrd As SortOrder)
' if this sort is on a new column, start with ASC
' else flip the order
If colIndex <> SortedColumn Then
SortedOrder = SortOrder.Asc
Else
SortedOrder = If(SortedOrder = SortOrder.Asc,
SortOrder.Desc, SortOrder.Asc)
End if
SortedColumn = colIndex
' exec the sort
ApplySort(sortType)
End Sub
根据您进行排序的方式,您可能需要自己的IComparer
处理文本和值列。 同时,您的代码将不得不拒绝对“日期”和“组合类型”列进行排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.