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
Datagridview Column Click/Sort
提问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
回答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

