Как отключить сортировку в DataGridView? - PullRequest
52 голосов
/ 21 декабря 2010

Как отключить сортировку в DataGridView? Мне нужно отключить сортировку заголовка DataGridView.

Ответы [ 8 ]

65 голосов
/ 21 декабря 2010
foreach (DataGridViewColumn column in dataGridView.Columns)
{
    column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
16 голосов
/ 06 августа 2014

Использовать LINQ:

Datagridview1.Columns.Cast<DataGridViewColumn>().ToList().ForEach(f => f.SortMode = DataGridViewColumnSortMode.NotSortable);
16 голосов
/ 03 июля 2013

Если вы хотите статически сделать столбцы не сортируемыми.Вы можете сделать это следующим образом:

  1. Открыть окна EditColumns элемента управления DatagridView 2. Выберите столбец, который нужно сделать не сортируемым, на левой боковой панели
  2. На правой панели свойстввыберите свойство «Режим сортировки» и выберите «Не сортируемые в этом».
4 голосов
/ 26 января 2016

Все очень просто:

foreach (DataGridViewColumn dgvc in dataGridView1.Columns)
{
    dgvc.SortMode = DataGridViewColumnSortMode.NotSortable;
}
0 голосов
/ 15 ноября 2018

Для расширения функциональности управления, подобного этой, мне нравится использовать методы расширения, чтобы их можно было легко использовать повторно.Вот начальный файл расширений, который содержит расширение для отключения сортировки в представлении данных.

Чтобы использовать его, просто включите его в свой проект и вызовите вот так

myDatagridView.DisableSorting ()

В моем случае я добавил эту строку кода в обработчик событий DataBindingComplete объекта DataGridView, где я хотел отключить сортировку

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 голосов
/ 08 июня 2017
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
      for (int i = 0; i < dataGridView1.Columns.Count; i++)
      {
           dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
      }
}
0 голосов
/ 19 января 2015

Если вы можете расширить DataGridView, вы можете переопределить метод Sort пустым. Это полностью отключает сортировку для DataGridView.

public override void Sort(DataGridViewColumn dataGridViewColumn, ListSortDirection direction)
{
    //base.Sort(dataGridViewColumn, direction);
}

Примечание: Вы даже не можете программно сортировать столбцы.

0 голосов
/ 18 ноября 2014

Вы можете отключить его в событии ColumnAdded:

private void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
{
    dataGridView1.Columns[e.Column.Index].SortMode = DataGridViewColumnSortMode.NotSortable;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...