繁体   English   中英

如何判断datagridview列的当前排序方向是什么?

[英]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的标准SortedColumnSortedOrder属性。 如果您自己进行排序,我不确定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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM