vb.net Datagridview 列单击/排序

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/17538247/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-17 14:12:06  来源:igfitidea点击:

Datagridview Column Click/Sort

vb.netdatagridviewcolumnsorting

提问by shaik ibrahim

HI guys as you all know if someone clicks the column header it will sort. However is it possible to do something after they sort. Like if it sort ascending a msgbox would prompt out saying you sort ascending. I would like to know which datagridevent it is. If possible any tips of how to tell whether the column is sorted or not? i found this link but its actually Web Form i need to do it in windows form any ideas?

嗨,你们都知道,如果有人点击列标题,它就会排序。但是,在它们排序之后是否可以做一些事情。就像如果它升序排序一个 msgbox 会提示说你排序升序。我想知道它是哪个 datagridevent。如果可能,有关如何判断列是否已排序的任何提示?我找到了这个链接,但它实际上是 Web Form 我需要在 Windows 窗体中做任何想法?

Datagridview column sorting when clicking on the column header

点击列标题时Datagridview列排序

回答by Kasnady

  Private Sub dataGridView1_ColumnHeaderMouseClick(ByVal sender As Object, _
        ByVal e As DataGridViewCellMouseEventArgs) _
        Handles dataGridView1.ColumnHeaderMouseClick

        Dim newColumn As DataGridViewColumn = _
            dataGridView1.Columns(e.ColumnIndex)
        Dim oldColumn As DataGridViewColumn = dataGridView1.SortedColumn
        Dim direction As ListSortDirection

        ' If oldColumn is null, then the DataGridView is not currently sorted. 
        If oldColumn IsNot Nothing Then 

            ' Sort the same column again, reversing the SortOrder. 
            If oldColumn Is newColumn AndAlso dataGridView1.SortOrder = _
                SortOrder.Ascending Then
                direction = ListSortDirection.Descending
' Msgbox HERE
            Else 

                ' Sort a new column and remove the old SortGlyph.
                direction = ListSortDirection.Ascending
                oldColumn.HeaderCell.SortGlyphDirection = SortOrder.None
               ' Msgbox HERE
            End If 
        Else
            direction = ListSortDirection.Ascending
' Msgbox HERE
        End If 

        ' Sort the selected column.
        dataGridView1.Sort(newColumn, direction)
        If direction = ListSortDirection.Ascending Then
            newColumn.HeaderCell.SortGlyphDirection = SortOrder.Ascending
        Else
            newColumn.HeaderCell.SortGlyphDirection = SortOrder.Descending
        End If 

    End Sub 

    Private Sub dataGridView1_DataBindingComplete(ByVal sender As Object, _
        ByVal e As DataGridViewBindingCompleteEventArgs) _
        Handles dataGridView1.DataBindingComplete

        ' Put each of the columns into programmatic sort mode. 
        For Each column As DataGridViewColumn In dataGridView1.Columns
            column.SortMode = DataGridViewColumnSortMode.Programmatic
        Next 
    End Sub

Source : MSDN

来源:MSDN

回答by Philip

  If _Data_Table.Rows.Count > 0 Then
        datagridview.DataSource = _Data_Table


        datagridview.Sort(grd_Cadastro.Columns("Your column name"), System.ComponentModel.ListSortDirection.Descending)


        datagridview.AutoResizeColumns()
        datagridview.ClearSelection()



    Else
        datagridview.DataSource = Nothing
    End If