Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[ПСП] / lab22.doc
Скачиваний:
80
Добавлен:
31.05.2015
Размер:
6.19 Mб
Скачать

Элемент управления DataGrid

Одна из наиболее часто встречающихся задач в web-приложении — найти какие-то данные в источнике данных по запросу пользователя и вернуть их в табличном формате. В классических ASP это делалось путем создания объекта ADO Recordset и создания таблицы HTML «на лету» с использованием данных из этого объекта Recordset. Тех же самых результатов гораздо проще можно достичь при помощи элемента управления WebForm - DataGrid.

Рассмотрим применение DataGrid на примере. Предположим, что нам необходимо предоставить пользователю в ответ на его запрос данные из базы данных Cars (той самой, с которой мы работали в главе 13). Первое, что нам нужно сделать — создать обра­ботчик для события Load нашей страницы. В нем мы установим соединение с базой дан­ных, создадим и заполним объект DataSet и укажем его в качестве источника данных для элемента управления DataGri d. Соответствующий код С# может выглядеть так:

using System.Data.SQL;

protected void Page_Load(object sender, EventArgs e)

{

ifdlsPostBack)

{

// Помещаем в DataGrid данные из таблицы Inventory

SqlConnection sqlConn = new SqlConnectionO;

sqlConn.ConnectionString = "data source=.; initial catalog=Cars:

integrated security=sspi;"; SqlDataAdapter dsc = new SqlDataAdapter("Select * from Inventory",

sqlConn); DataSet ds = new DataSetO: dsc.FilKds, "Inventory"):

DataGridl.DataSource = ds.Tables["Inventory"].DefaultView; DataGridl.DataBindO; } }

Результат представлен на рис. 14.47.

Рис. 14.47. Элемент управления DataGrid с данными, полученными из SQL Server

Еще немного об источниках данных

Как мы только что убедились, выводить содержимое объекта DataTabl e при помо­щи элементов управления WebForm (например, DataGrid) можно легко и просто. Од­нако достаточно часто возникает необходимость выводить на web-странице дан­ные, которые хранятся другими способами. И в элементах управления WebForm предусмотрена возможность делать это, то есть выводить данные, которые нахо­дятся в каком угодно виде.

Например, предположим, что мы столкнулись со следующей ситуацией: нам необходимо заполнить элемент управления ListBox данными, которые в настоя­щее время хранятся в обычном строковом массиве (такая потребность возникает очень часто). Заполнение ListBox данными из этого массива производится точно так же, как заполнение данными DataGrid из объекта DataTable в предыдущем при­мере. Все удивительно просто:

protected void Page_load(object sender. EventArgs e)

{

if(IIsPostBack)

{

// Создаем массив строковых значений - он нам нужен // для нашей демонстрации

string[] carPetNames - { "Viper". "Hank". "Ottis". "Alponzo". "Cage". "ТВ" }: // petNameList - это наш элемент управления ListBox на странице petNameList.DataSource - carPetNames; petNameList.DataBindO; } }

To, что должно получиться, представлено на рис. 14.48.

Рис. 14.48. Привязываем данные к элементам управления WebForm

Код приложения ASPData можно найти в подкаталоге Chapter 14.

Все массивы .NET происходят от единого общего предка — класса System. Array, а в классе System. Array реализован интерфейс IEnumerable. Мы говорим это к тому, что любой класс, в котором реализован этот интерфейс, может быть привязан к элементу управления WebForm (да и Windows Forms) в качестве источника данных. Например, если данные находились в объекте ArrayLi st, все будет точно так же:

protected void Page_load(object sender, EventArgs e)

{

ifdlsPostBack)

{

// Теперь виесто обычного массива у нас - объект ArrayList ArrayList carPetNames = new ArrayListO:

carPetNames.Add("Vi per"): carPetNames.Add("Otti s"); carPetNames. AddC'Alphonzo"): carPetNames.Add("Cage"); carPetNames.AddС"ТВ"); petNameList.DataSource = carPetNames; petNameLi st.DataBi nd(): } }

Результат, естественно, остался тем же самым.

Соседние файлы в папке [ПСП]