Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
210
Добавлен:
10.05.2015
Размер:
33.49 Mб
Скачать

7.4.1.5. Сортировка

Элемент управления GridView поддерживает сортировку по одиночному столбцу без создания дополнительного кода. Функциональность сортировки элемента управления GridView можно расширить, используя событие сортировки и задавая выражение сортировки.

Элемент управления GridView не выполняет собственную сортировку столбцов, а использует элемент управления источником данных для выполнения сортировки. Элемент управления обеспечивает пользовательский интерфейс сортировки, такой как элементы управления LinkButton, отображаемые в верхней части каждого столбца сетки. Однако элемент управления GridView использует функции сортировки данных элемента управления источника данных, к которому он привязан.

Если связанный элемент управления источником данных может использоваться для сортировки данных, то элемент управления GridView может взаимодействовать с элементом управления источником данных и запрашивать сортированные данные, передавая SortExpression источнику данных при выборе данных. Не все элементы управления источником данных поддерживают функцию сортировки (например, элемент управления XmlDataSource ее не поддерживает). Однако если элемент управления источником данных поддерживает сортировку, GridView может ее использовать.

7.4.1.5.1. Процесс сортировки GridView

Можно включить сортировку по умолчанию в элементе управления GridView, присвоив его свойству AllowSorting значение true. При присвоении этому свойству значения true элемент управления GridView отображает элемент управления LinkButton в заголовках столбца. Элемент управления также неявно присваивает свойству SortExpression каждого столбца имя поля данных, к которому он привязан. Например, если таблица содержит столбец, отображающий столбец City таблицы Employees, свойству SortExpression этого столбца присваивается значение City.

Во время выполнения пользователи могут щелкать элемент управления LinkButton в заголовке столбца для сортировки по этому столбцу. При щелчке по этой ссылке страница выполняет обратную передачу и создает событие Sorting элемента управления GridView. Выражение сортировки передается как часть аргумента события. По умолчанию для события Sorting элемент управления GridView передает выражение сортировки элементу управления источником данных.

После выполнения запроса создается событие Sorted. Это событие позволяет выполнять действия, следующие после запроса (например, отобразить сообщение о состоянии). И, наконец, элемент управления источником данных повторно выполняет привязку элемента управления GridView к результатам повторно сортированного запроса.

Элемент управления GridView не выполняет проверку того, поддерживает ли элемент управления источником данных сортировку. Он всегда передает выражение сортировки источнику данных. Если элемент управления источником данных не поддерживает сортировку и операция сортировки выполняется в элементе управления GridView, элемент управления GridView создает исключение NotSupportedException. Можно перехватить это исключение в обработчике для события Sorting и определить, поддерживает ли источник данных сортировку или для нее надо использовать собственную логику сортировки.

Задание свойства AllowSorting сетки позволяет сортировать столбцы по умолчанию. Можно отключить сортировку для отдельных полей (например, для поля BoundField или TemplateField), указав в качестве значения свойства SortExpression отдельного столбца пустую строку ("").

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

  • Настройка выражения сортировки, передаваемое элементу управления источником данных. По умолчанию выражение сортировки – это имя отдельного столбца. Можно изменить выражение сортировки в обработчике событий. Например, чтобы выполнить сортировку по двум столбцам, можно создать выражение сортировки, содержащее оба столбца. Затем можно передать измененное выражение сортировки элементу управления источником данных.

  • Создание собственной логики сортировки. Например, при работе с источником данных, не поддерживающим сортировку, можно выполнить сортировку и помощью собственного кода, а затем привязать к компоненту отсортированные данные.