Вот как можно определить столбец FirstName, чтобы строки были отсортированы в алфавитном порядке по имени:
<asp:BoundField DataField="FirstName" HeaderText="First Name"
SortExpression="FirstName"/>
Обратите внимание, что если вы не хотите, чтобы можно было выполнять сортировку по столбцу, то для этого просто не нужно устанавливать его свойство SortExpression.
Совет. Если вы используете автоматически сгенерированные столбцы, то каждый привязанный столбец имеет свойство SortExpression, совпадающее с его свойством DataField. После того, как выражение сортировки ассоциировано со столбцом и свойство AllowSorting установлено в true. GridView будет отображать заголовки как активные ссылки. Однако реализация действительной логики сортировки остается делом элемента управления источник данных. Как именно реализована сортировка — зависит от используемого источника данных. Не все источники данных поддерживают сортировку, но SqlDataSource и ObjectDataSource это делают.
В случае SqlDataSource сортировка осуществляется встроенными средствами класса DataView. По сути, когда пользователь щелкает на ссылке столбца, свойство DataView.Sort устанавливается равным выражению сортировки по этому столбцу.
На заметку! Как объяснялось в главе 8, каждый объект DataTable связан с DataView по умолчанию. DataView — это "окно" в DataTable, которое позволяет применять сортировку и фильтрацию без изменения структуры лежащей в основе таблицы. DataView можно использовать программно, но когда вы применяете SqlDataSource, он используется неявно "за кулисами". Однако DataView доступен только тогда, когда свойство DataSourceMode установлено в SqlDataSourceMode.DataSet.
При сортировке DataView данные из базы извлекаются неупорядоченными, и результат сортируется в памяти. Это не самый скоростной подход (сортировка в памяти требует больше накладных расходов и выполняется медленнее, чем это делает сам SQL Server), но она лучше масштабируется, когда вы добавляете кэширование. Дело в том, что можно кэшировать единственную копию данных и сортировать ее динамически несколькими различными способами. (Подробнее об этой технике читайте в главе 11.) Без сортировки DataView для извлечения вновь отсортированных данных требуется выполнять отдельный запрос.
На рис. 10.8 показан сортируемый GridView со столбцами-ссылками. Обратите внимание, что для этого сценария не требуется никакого пользовательского кода.
предыдущая следующая страница оглавление
436