Подтвердить что ты не робот

Как предотвратить сортировку сетки данных

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

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

Спасибо:)

EDIT:

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

4b9b3361

Ответ 1

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

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);

Ответ 2

For i = 0 To DataGridView1.Columns.Count - 1
    DataGridView1.Columns.Item(i).SortMode = DataGridViewColumnSortMode.Programmatic
Next i

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

Находясь в .NET 3.0, GridView имеет свойство AllowSorting