Datagridview列单击/排序

时间:2013-07-09 00:50:46

标签: vb.net datagridview columnsorting

很明显,如果有人点击它将排序的列标题,你们都知道。但是,在排序后可以做一些事情。就像它升序排序一样,msgbox会提示你按升序排序。我想知道它是哪个datagridevent。如果可能的话,有关如何判断列是否已排序的提示?我找到了这个链接,但它实际上是Web表单,我需要在windows中形成任何想法吗?

Datagridview column sorting when clicking on the column header

2 个答案:

答案 0 :(得分:3)

  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

来源:MSDN

答案 1 :(得分:0)

  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