【问题标题】:Datagridview Column Click/SortDatagridview 列单击/排序
【发布时间】:2013-07-06 11:17:48
【问题描述】:

大家都知道,如果有人单击列标题,它将进行排序。但是,是否有可能在它们排序后做某事。就像它按升序排序一样,msgbox 会提示您按升序排序。我想知道它是哪个datagridevent。如果可能的话,如何判断列是否已排序的任何提示?我找到了这个链接,但它实际上是 Web 窗体,我需要在 Windows 窗体中执行它有什么想法吗?

Datagridview column sorting when clicking on the column header

【问题讨论】:

    标签: vb.net datagridview columnsorting


    【解决方案1】:
      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

    【讨论】:

    • 我需要能够排序,但是我动态创建了DataGridView1,所以我不能将代码放在任何地方,因为网格还不存在?
    • 非常感谢。你为我节省了太多时间和头痛:)
    【解决方案2】:
      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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      相关资源
      最近更新 更多