Как предотвратить сортировку сетки данных
Я использую DataGridView в форме Windows. Он отображает только два столбца. По умолчанию при запуске приложения, если я нажимаю на заголовки столбцов, datagridview сортируется на основе этого столбца. Однако я хочу полностью отключить сортировку по сетке. Мне не удалось найти свойство, в котором я мог бы установить sorting = false или что-то в этом роде.
Кто-нибудь может рассказать мне, как отключить сортировку сетки?
Спасибо:)
EDIT:
Просто подумал, что я могу установить отдельные столбцы как NotSortable (см. ниже ответ). Можно ли это сделать на уровне представления сетки, а не отдельных столбцах?
Ответы
Ответ 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