How to disable sort in DataGridView?

前端 未结 9 661
孤城傲影
孤城傲影 2020-12-04 23:35

How can I disable sort in DataGridView? I need to disable the header DataGridView sorting.

相关标签:
9条回答
  • 2020-12-04 23:41

    It's very simple:

    foreach (DataGridViewColumn dgvc in dataGridView1.Columns)
    {
        dgvc.SortMode = DataGridViewColumnSortMode.NotSortable;
    }
    
    0 讨论(0)
  • 2020-12-04 23:42

    For extending control functionality like this, I like to use extension methods so that it can be reused easily. Here is a starter extensions file that contains an extension to disable sorting on a datagridview.

    To use it, just include it in your project and call like this

    myDatagridView.DisableSorting()

    In my case, I added this line of code in the DataBindingComplete eventhandler of the DataGridView where I wanted sorting disabled

    Imports System.ComponentModel
    Imports System.Reflection
    Imports System.Runtime.CompilerServices
    Imports System.Windows.Forms
    
    Public Module Extensions
    
    <Extension()>
    Public Sub DisableSorting(datagrid As DataGridView)
        For index = 0 To datagrid.Columns.Count - 1
            datagrid.Columns(index).SortMode = DataGridViewColumnSortMode.NotSortable
        Next
    End Sub
    
    
    End Module
    
    0 讨论(0)
  • 2020-12-04 23:45
    private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
    {
          for (int i = 0; i < dataGridView1.Columns.Count; i++)
          {
               dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
          }
    }
    
    0 讨论(0)
  • 2020-12-04 23:46

    Use LINQ:

    Datagridview1.Columns.Cast<DataGridViewColumn>().ToList().ForEach(f => f.SortMode = DataGridViewColumnSortMode.NotSortable);
    
    0 讨论(0)
  • 2020-12-04 23:49
    foreach (DataGridViewColumn column in dataGridView.Columns)
    {
        column.SortMode = DataGridViewColumnSortMode.NotSortable;
    }
    
    0 讨论(0)
  • 2020-12-04 23:49

    You can disable it in the ColumnAdded event:

    private void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
    {
        dataGridView1.Columns[e.Column.Index].SortMode = DataGridViewColumnSortMode.NotSortable;
    }
    
    0 讨论(0)
提交回复
热议问题