Сортировка ListView, используя столбец, который вы нажимаете на C#

Вы можете сортировать ListView с помощью столбца, который вы нажимаете, но это намного больше, чем просто сортировка элементов ListView. Для сортировки с использованием элементов вы можете просто установить свойство Sorting элемента управления в Ascending или Descending. К сожалению, элемент управления сортирует только его элементы, а не их подпозиции. (Он даже не будет использовать подпункты для разрыва связей, когда элементы имеют один и тот же текст.)

Чтобы изменить поведение сортировки элемента управления, вы должны создать класс, реализующий интерфейс IComparer. Ключом к этому классу является метод Compare. Этот метод принимает в качестве параметров два ListViewItems для сравнения и должен возвращать -1, если первый должен быть до второго в порядке сортировки, 0, если элементы равны, и 1, если первый элемент должен появиться после второй.

Следующий код показывает класс ListViewComparer, используемый в этом примере.

Класс использует частные переменные ColumnNumber и SortOrder, чтобы отслеживать столбец, на котором он должен сортироваться, и должен ли он сортировать восходящий или нисходящий. Эти значения задаются конструктором класса.

Метод Compare сравнивает соответствующие подпункты, чтобы определить, как должны быть заказаны два элемента. Он должен сделать небольшую проверку, чтобы защититься от случая, когда у одного из элементов нет подэлемента, который объект пытается сравнить. (Например, если вы сравниваете четвертый подпункт, но один из элементов имеет только два подпункта.)

Код также пытается преобразовать значения в двойные и дат, чтобы увидеть, следует ли сортировать значения с использованием этих типов данных. Например, поскольку строки «9» появляются после «100», но как цифры 9 до 100. Аналогично, как строки «10/10/2010» предшествуют «1/1/2009», но по мере того, как даты 10/10/2010 появляются после 1/1/2009. Сравнение значений как чисел или дат делает их более разумными для пользователей.

В примерной программе используется следующий код для сортировки, когда вы нажимаете столбец ListView.

Переменная SortingColumn отслеживает столбец, который в настоящее время сортирует программа.

Когда пользователь нажимает заголовок столбца, программа определяет, какой столбец был нажат. Затем он определяет новый порядок сортировки, который он должен использовать. Если новый столбец совпадает со старым, программа переключает порядок сортировки. В противном случае сортировка возрастает.

Программа добавляет «& gt;» к заголовку столбца, когда сортирует по возрастанию и «& lt;» при сортировке по убыванию. Он использует эти символы для определения текущего порядка сортировки.

После принятия решения о новом порядке сортировки программа удаляет индикатор сортировки ("& gt;" или "& lt;") из текущего столбца сортировки и добавляет его в новый столбец сортировки.

Источник: http://csharphelper.com/blog/2014/09/sort-a-listview-using-the-column-you-click-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector