
- •Дисциплина «Разработка и эксплуатация удаленных баз данных» лабораторная работа №12 тема: Элемент управления ListView, сортировка его элементов по столбцу
- •Теоретическая часть:
- •Практическая часть:
- •Создание нового проекта и подключения данных
- •Обработка события ColumnClick
- •Создание класса ListViewItemComparer
- •Сортировка по возрастанию или по убыванию
- •Изменения в форме
- •Изменения в методе обработки события ColumnClick
- •Изменения в классе ListViewItemComparer
Обработка события ColumnClick
6. Чтобы определить набор подэлементов для сортировки, необходимо знать, когда пользователь щелкает по заголовку столбца для подэлемента. Для этого требуется создать метод обработки события ColumnClick элемента управления ListView. Поместите метод обработки события как член формы
7. Соедините метод обработки события с элементом управления ListView, добавив код к конструктору формы
8. Добавьте следующий код к методу обработки события ColumnClick
Код, добавленный к методу обработки события, устанавливает свойство ListViewItemSorter элемента управления ListView с помощью нового экземпляра класса ListViewItemComparer (который будет определен далее) и присваивает столбец, выбираемый в данных момент щелчком мыши. Выбираемый щелчком мыши столбец передается как часть параметров события. После установки свойства ListViewItemSorter вызывается метод Sort, выполняющий ручную сортировку.
Создание класса ListViewItemComparer
Ключом к пользовательской сортировке в элементе управления ListView является создание класса, реализующего интерфейс System.Collections.IComparer. Именно этот класс предоставляет возможность сортировки элементов. В этом примере класс ListViewItemComparer определен и добавлен как вложенный класс данной формы. ListViewItemComparer выполняет основную сортировку по возрастанию для указанного столбца, который передается в конструктор класса.
8. Добавьте к классу Form1 следующий код
Сортировка
выполняется в требуемом методе интерфейса
IComparer, называющемся Compare. Этот метод
принимает два объекта как параметры, в
которых будут содержаться два сравниваемых
элемента. Когда метод Sort вызывается в
методе обработки события ColumnClick элемента
управления ListView, метод Sort использует
объект ListViewItemComparer, определенный и
присвоенный свойству ListViewItemSorter, и
вызывает его метод Compare. Когда объект
ListViewItemComparer создан, он присваивается
индексу столбца, выбранного щелчком
мыши. Этот индекс столбца используется
для обращения к подэлементам столбца,
который требуется отсортировать. Затем
подэлементы передаются в метод
String.Compare, который сравнивает элементы
и возвращает один из трех результатов.
Если элемент в параметре x меньше элемента
в параметре y, возвращается значение
меньше нуля. Если элементы идентичны,
возвращается нуль. Наконец, если элемент
в параметре x больше элемента в параметре
y, возвращается значение больше нуля.
Значение, возвращенное методом Compare,
передается назад в метод Sort, определяющий
местоположение каждого сравниваемого
элемента в столбце. Метод Sort вызывает
метод Compare требуемое число раз, чтобы
отсортировать все подэлементы в выбранном
столбце.
Сортировка по возрастанию или по убыванию
Пользователям элемента управления ListView потребуется сортировка элементов по возрастанию и убыванию. Чтобы облегчить эту задачу, в предыдущий пример необходимо внести некоторые изменения, чтобы метод Compare мог идентифицировать элементы для сортировки.
Изменения в форме
Как правило, чтобы переключиться между сортировкой по возрастанию и убыванию, необходимо щелкнуть заголовок столбца еще раз. Пользователи ожидают, что при первом щелчке заголовка столбца происходит сортировка, а при последующем щелчке – изменение порядка сортировки. Предыдущий пример кода должен уметь определять, что на столбце щелкнули больше одного раза. Для этого добавьте закрытую переменную типа integer к классу Form. Эта переменная хранит последний столбец, который был выбран щелчком мыши. Метод обработки события ColumnClick использует эту переменную, чтобы сравнить последний столбец со столбцом, выбираемым щелчком мыши в данный момент, и определить, совпадают столбцы или нет.
9.
Добавьте следующее определение члена
к классу Form.