Сортировка данных в серверном веб-элементе управления GridView
Обновлен: Ноябрь 2007
Элемент управления GridView предоставляет встроенные функциональные возможности сортировки, для которой не требуется создания кода. Можно выполнить дальнейшую настройку функции сортировки элемента управления GridView, используя значения настраиваемого свойства SortExpression для столбцов, а также используя события Sorting и Sorted.
Использование сортировки в элементе управления GridView
Элемент управления GridView не выполняет собственную сортировку столбцов, а использует элемент управления источником данных для выполнения сортировки. Элемент управления обеспечивает пользовательский интерфейс сортировки, такой как элементы управления LinkButton, отображаемые в верхней части каждого столбца сетки. Однако элемент управления GridView использует функции сортировки данных элемента управления источника данных, к которому он привязан.
Если связанный элемент управления источником данных может использоваться для сортировки данных, то элемент управления GridView может взаимодействовать с элементом управления источником данных и запрашивать сортированные данные, передавая SortExpression источнику данных при выборе данных. Не все элементы управления источником данных поддерживают функцию сортировки (например, элемент управления XmlDataSource ее не поддерживает). Однако если элемент управления источником данных поддерживает сортировку GridView может ее использовать. В следующем списке описаны элементы управления источником данных и конфигурация, необходимая для поддержки функции сортировки:
Элементы управления SqlDataSource и AccessDataSource могут выполнять сортировку, если свойству DataSourceMode присвоено значение DataSet или если свойству SortParameterName присвоено значение DataSet или DataReader.
Элемент управления ObjectDataSource можно использовать для выполнения сортировки, если присвоить его свойству SortParameterName значение, поддерживаемое базовым объектом.
Процесс сортировки GridView
Можно включить сортировку по умолчанию в элементе управления GridView, присвоив его свойству AllowSorting значение true. При присвоении этому свойству значения true элемент управления GridView отображает элемент управления LinkButton в заголовках столбца. Элемент управления также неявно присваивает свойству SortExpression каждого столбца имя поля данных, к которому он привязан. Например, если сетка содержит столбец, отображающий столбец City таблицы Employees в примере базы данных Northwind, свойству SortExpression этого столбца присваивается значение City.
Во время выполнения пользователи могут щелкать элемент управления LinkButton в заголовке столбца для сортировки по этому столбцу. При щелчке по этой ссылке страница выполняет обратную передачу и создает событие Sorting элемента управления GridView. Выражение сортировки (по умолчанию: имя столбца данных) передается как часть аргумента события. По умолчанию для события Sorting элемент управления GridView передает выражение сортировки элементу управления источником данных. Элемент управления источником данных выполняет запрос или метод выбора, включающие параметры сортировки, передаваемые сеткой.
После выполнения запроса создается событие Sorted сетки. Это событие позволяет выполнять действия, следующие после запроса (например, отобразить сообщение о состоянии). И, наконец, элемент управления источником данных повторно выполняет привязку элемента управления GridView к результатам повторно сортированного запроса.
Элемент управления GridView не выполняет проверку того, поддерживает ли элемент управления источником данных сортировку. Он всегда передает выражение сортировки источнику данных. Если элемент управления источником данных не поддерживает сортировку и операция сортировки выполняется в элементе управления GridView, элемент управления GridView создает исключение NotSupportedException. Можно перехватить это исключение в обработчике для события Sorting и определить, поддерживает ли источник данных сортировку или для нее надо использовать собственную логику сортировки.
Управление сортировкой для отдельных столбцов
Задание свойства AllowSorting сетки позволяет сортировать столбцы по умолчанию. Можно отключить сортировку для отдельных полей (например, для поля BoundField или TemplateField), указав в качестве значения свойства SortExpression отдельного столбца пустую строку ("").
Пользовательская сортировка
Если сортировка по умолчанию не соответствует требованиям, можно настроить процедуру сортировки сетки. Для выполнения пользовательской сортировки обычно обрабатывают событие Sorting. В обработчике можно выполнить следующую процедуру:
Настройте выражение сортировки, передаваемое элементу управления источником данных. По умолчанию выражение сортировки — это имя отдельного столбца. Можно изменить выражение сортировки в обработчике событий. Например, чтобы выполнить сортировку по двум столбцам, можно создать выражение сортировки, содержащее оба столбца. Затем можно передать измененное выражение сортировки элементу управления источником данных. Дополнительные сведения см. в описании свойства GridViewSortEventArgs.SortExpression.
Создание собственной логики сортировки Например, при работе с источником данных, не поддерживающем сортировку, можно выполнить сортировку и помощью собственного кода, а затем привязать сетку к сортированным данным.
См. также
Основные понятия
Общие сведения о серверных веб-элементах управления ASP.NET с привязкой к данным