logo search
[ПСП] / lab22

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

Как мы только что убедились, выводить содержимое объекта 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(): } }

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