Доступ к БД из ASP.NET
Страница 8. Сортировка данных


Сортировка данных

Этот пример обеспечивает доступ к базе данных, связывает DataGrid с именами столбцов, которые являются сортируемыми. Когда имя столбца выбрано, таблица будет отсортирована непосредственно в порядке этого столбца.

Создание отсортированной таблицы

1. Импортируем необходимые пространства имён.

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SQL" %>
<html>

Внутри тэга <script language="C#" runat="server"> показан пример трёх функций: Page_Load, MyDataGrid_Sort и BindGrid. Эти функции более подробно описаны в представленных ниже шагах.

<script language="C#" runat="server">
SQLConnection myConnection;

2. Определяем функцию Page_Load, которая устанавливает информацию подключения к базе данных "pubs". Также она проверяет, что эта страница не является PostBack, но если это так, вызывает специальную функцию BindGrid. BindGrid описана в шаге 4, главы 5. "Вставка данных в SQL базу данных".

3. Определяем функцию MyDataGrid_Sort. Эта функция получает аргумент DataGridSortCommandEventArgs E, который связан с атрибутом OnSortCommand в DataGrid, и использует его в BindGrid.

protected void MyDataGrid_Sort(Object Src, 

DataGridSortCommandEventArgs E)
{
BindGrid(E.SortField);
}

4. Определяем функцию BindGrid. Эта функция исполняется по-другому, чем в предыдущих примерах. Параметр SortField (сортируемый столбец) передаётся в неё из функции MyDataGrid_Sort. Она использует эту информацию, чтобы отсортировать таблицу по указанному столбцу.

public void BindGrid(String SortField) 
{

а) Устанавливаем SQLDataSetCommand, чтобы получить доступ к таблице "Authors" в базе данных "pubs" (myConnection было установлено в шаге 2).

 SQLDataSetCommand myCommand = new SQLDataSetCommand
("select * from Authors", myConnection);

б) Устанавливаем и заполняем новый Dataset.

 DataSet ds = new DataSet();
myCommand.FillDataSet(ds, "Authors");

в) Устанавливаем DataView для нового Dataset, и сортируем данные, используя SortField.

 DataView Source = ds.Tables["Authors"].DefaultView;
Source.Sort = sortfield;

г) Связываем DataGrid с сортируемым DataView. Заметьте, что MyDataGrid - это "id", переданный DataGrid в body страницы (шаг 5б).

 MyDataGrid.DataSource=Source;
MyDataGrid.DataBind();
}

5. В <body> отображаем данные.

<body>

а) Отображаем заголовок.

 <h3><font face="Verdana">Sorting Data in a DataGrid Control
</font></h3>

б) В тэге <form> создаём DataGrid и инициализируем его атрибуты.

 <form runat="server">
<ASP:DataGrid id="MyDataGrid" runat="server"
OnSortCommand="MyDataGrid_Sort"
Width="700"
BackColor="#ccccff"
BorderColor="black"
ShowFooter="false"
CellPadding=3
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
AllowSorting="true"
/>
</form>
</body>
</html>
 
Следующая статья »