Ошибка сортировки нескольких столбцов DataGridView - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь настроить пользовательский элемент формы, который является расширением DataGridView, чтобы добавить некоторые дополнительные функции.Сейчас я пытаюсь сделать так, чтобы, удерживая клавишу CTRL, пользователь мог сортировать данные в DataGridView по нескольким столбцам.Это код, который у меня есть на данный момент:

Public Class CustomerDataGrid
    Inherits DataGridView

    Private _tableData As DataTable = New DataTable()
    Private _bindSource As BindingSource = New BindingSource()
    Private _sortColumns As List(Of String) = New List(Of String)

    Public Sub SetData(ByVal data As DataTable)
        _bindSource.Sort = Nothing
        _bindSource.DataSource = Nothing
        _tableData = data
        _bindSource.DataSource = _tableData
        Me.DataSource = _bindSource
    End Sub

    Private Sub Self_ColumnHeaderClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles Me.ColumnHeaderMouseClick
        Dim colString As String = ""
        If _sortColumns Is Nothing Then _sortColumns = New List(Of String)
        If e.Button = MouseButtons.Left Then
            If (Control.ModifierKeys And Keys.Control = Keys.Control) Then
                _sortColumns.Add(Me.Columns(e.ColumnIndex).Name)
                For Each str As String In _sortColumns
                    colString = colString & str & " ASC, "
                Next
                colString = colString.Remove(colString.LastIndexOf(","))
                _bindSource.Sort = colString
            Else
                _sortColumns.Clear()
                _sortColumns.Add(Me.Columns(e.ColumnIndex).Name)
        Else
            Return
        End If
    End Sub

У меня странная ошибка с моим кодом, где он работает, но только с конкретными столбцами.Например, у меня есть настройка списка деталей, в которой есть столбцы:

Part Number | Description | Information | Price

Если я сначала отсортирую по «Информации» или «Цене», я могу удерживать клавишу CTRL, а затем отсортировать ее поОписание.Однако я не могу начать с описания и сортировать его по информации или цене.А номер детали вообще не работает.

Я не совсем уверен, почему одни столбцы работают, а другие нет.Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...