DataGridView.Sorted, как определить, какой столбец был отсортирован?

1

DataGridView.Sorted срабатывает, когда пользователь нажимает на заголовок для сортировки сетки. Как я могу программно определить, какой заголовок столбца был нажат? И/или какой столбец был отсортирован?

Я устал от кода ниже, но событие Sorted срабатывает перед событием click. Домены в любом другом не помогли.

Я могу переместить вызов GreenBar на событие click, но это похоже на плохую идею, так как это зависит от аномалии при запуске.

Private Sub dgvMAFTrans_ColumnHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvMAFTrans.ColumnHeaderMouseClick
    msLastMAFHeaderClicked = dgvMAFTrans.Columns(e.ColumnIndex).Name
End Sub
Private Sub dgvMAFTrans_Sorted(sender As Object, e As EventArgs) Handles dgvMAFTrans.Sorted
    Application.DoEvents()
    GreenBar(dgvMAFTrans, msLastMAFHeaderClicked)
End Sub

Код для добавления эффекта зеленого штриха:

Sub GreenBar(dgvRef As DataGridView, ColumnName As String)
    Dim sLastTrans As String = ""
    Dim bAddColor As Boolean = False
    If dgvRef.RowCount = 0 Then Exit Sub
    Try
        sLastTrans = dgvRef.Rows(0).Cells(ColumnName).Value
    Catch ex As Exception
        Exit Sub ' no transid
    End Try
    For Each row As DataGridViewRow In dgvRef.Rows
        If row.Cells(ColumnName).Value <> sLastTrans Then
            bAddColor = Not bAddColor
            sLastTrans = row.Cells(ColumnName).Value
        End If
        If bAddColor Then
            row.DefaultCellStyle.BackColor = Color.LightGreen
        End If
    Next
End Sub
Теги:
winforms
datagridview

1 ответ

1
Лучший ответ

Вы можете проверить свойство SortedColumn DataGridView чтобы увидеть, какой столбец был отсортирован.

Другим полезным свойством является свойство SortOrder.

  • 0
    К сожалению, Get only SortedColumn - это Ничто, когда гирд загружен в первый раз, поэтому это не идеальное решение, но оно сработало для сортировки пользователей после первого отображения.
  • 0
    Значение свойства устанавливается либо пользователем, щелкающим заголовок столбца для сортировки (если он включен), либо путем вызова сортировки в представлении таблицы данных вручную. По умолчанию предполагается, что строки неупорядочены. Если они упорядочены при заполнении, вы можете вызвать DataGridView.Sort самостоятельно, чтобы убедиться, что он установлен (что также гарантирует, что глифы стрелок сортировки установлены правильно в столбце.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню