Как предотвратить сортировку представления сетки данных - PullRequest
11 голосов
/ 08 июня 2009

Я использую DataGridView в форме Windows. Он отображает только две колонки. По умолчанию при запуске приложения, если я щелкаю заголовки столбцов, представление данных сортируется на основе этого столбца. Однако я хочу полностью отключить сортировку в виде сетки. Мне не удалось найти свойство, где я мог бы установить sorting = false или что-то в этом роде.

Может кто-нибудь подсказать, пожалуйста, как отключить сортировку вида сетки?

Спасибо:)

EDIT:

Просто подумал, что я могу установить отдельные столбцы как NotSortable (опубликованный ответ ниже). Можно ли сделать это на уровне вида сетки, а не на отдельных столбцах?

Ответы [ 6 ]

21 голосов
/ 08 июня 2009

Хорошо, нашел ответ. Для каждого столбца мне нужно явно указать

this.dgv.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;

Итак, я написал свою собственную функцию в классе Helper

/// <summary>
/// Sets the sort mode for the data grid view by setting the sort mode of individual columns
/// </summary>
/// <param name="dgv">Data Grid View</param>
/// <param name="sortMode">Sort node of type DataGridViewColumnSortMode</param>
public static void SetGridViewSortState(DataGridView dgv, DataGridViewColumnSortMode sortMode)
{
    foreach (DataGridViewColumn col in dgv.Columns)
        col.SortMode = sortMode;
}

и везде, где мне нужно, чтобы представления сетки были нестабильными, я называю это так:

Helper.SetGridViewSortState(this.dgv, DataGridViewColumnSortMode.NotSortable);
4 голосов
/ 08 июня 2009
For i = 0 To DataGridView1.Columns.Count - 1
    DataGridView1.Columns.Item(i).SortMode = DataGridViewColumnSortMode.Programmatic
Next i

web gridview имеет свойство AllowSorting, которое намного проще!

2 голосов
/ 08 июня 2009

Сортировка - это, частично, особенность источника данных. Какой источник данных в этом случае? DataTable, возможно? Один из вариантов - просто использовать источник данных, который не поддерживает сортировку, а это почти все из них. List<T>, BindingList<T> и т. Д. - не выполнять сортировку.

Если вы должны использовать DataView, вы можете (я думаю) обернуть представление пользовательским представлением, которое повторно реализует IBindingList (возвращая false для SupportsSorting), но просто изменив значения для столбца, много проще (до такой степени, что было бы сумасшедшим сделать что-нибудь еще ...)

0 голосов
/ 22 июня 2018

Или вы можете создать свою собственную функцию

Private Sub NotSortGrid()

    For i = 0 To dgvUtil.Columns.Count - 1



        dgvUtil.Columns.Item(i).SortMode = DataGridViewColumnSortMode.NotSortable



    Next i

End Sub

0 голосов
/ 30 августа 2013

Начиная с .NET 3.0, GridView имеет свойство AllowSorting

0 голосов
/ 08 июня 2009

Вы всегда можете обрабатывать события щелчка заголовка столбца и события двойного щелчка самостоятельно и ничего не делать в них.

...