Главная » C#, Компоненты » Стандартная привязка данных

0

Посмотрим еще раз на привязку списка записей customer:

BindingList<Customer> list — new BindingList<Customer>(); list.Add(new Customer(0, "Mr. Zero", 10.0M)); list.Add(new Customer(l, "Mr. One" , 15.0M)); list.Add(new Customer(2, "Mr. Two" , 20.0M))?

Два вида привязки я уже показал в предыдущем разделе. Привязка к компоненту TextBox:

this.textBoxl.DataBindings.Add("Text", list, "Name");

Привязка к компоненту GridView: this.dataGridViewl.DataSource = list;

Итак, привязка к компоненту TextBox осуществляется с помощьео свойства DataBinding, а привязка к компоненту DataGridView— с помощью свойства DataSource. Для выпадающего списка comboBox привязка выглядит почти так же:

this.comboBox2.DataSource = list;

Но ведь компонент ComboBox отображает только одно поле! Что же произойдет в этом случае? Выпадающий список отобразит нужное количество строк, содержащих одно И то же значение— DataBindingTest. Customer. Не Трудно догадаться, что это значение получено вызовом метода ToStringO класса customer. Действительно, перекрыв этот метод (листинг 13.2), мы получим более осмысленные данные в списке (рис. ] 3.4).

Листинг 13.2. MoioAT»st:ij!i.;(> класса-ли. г

public class Customer

}

public override string ToStringO {

return string.Format("ID={0}, Name={l}, Rate={2}", ID, Name, Rate);

}

}

Рис. 13.4. Привязка данных: GridView, ComboBox и TextBox

Еще один способ привязки данных к компоненту ComboBox— указание поля, по которому будет осуществляться привязка:

this.comboBoxl.DisplayMember = "Name"; this.comboBoxl.DataSource = list;

Свойство DisplayMember указывает, какое именно поле списка будет отображено в выпадающем списке.

Теперь посмотрим, как эти свойства выглядят в редакторе свойств. Свойства, относящиеся к привязке данных, располагаются в категории Data (рис. 13.5):

?   DataSource — определяет источник данных;

О DataMember — определяет поле, которое будет отображаться. Если это свойство не задано, то вызывается метод ToStringO для вычисления отображаемого значения;

?    vaiueMember — определяет поле, которое будет возвращаться в свойстве текущего выбранного элемента SeiectedVaiue. Если это свойство не задано, то вызывается метод ToString () для вычисления возвращаемого значения.

Эти же свойства отображаются в меню смарт-тега при включении режима

Use data bound items (Использовать привязку к данным) (рис. \ 3.6).

Для подключения источника данных нужно выбрать значение свойства Datasource из существующих источников или, нажав на ссылку Add Project Data Source, добавить новый источник данных (рис. 13.7). Источником данных может быть выбрана база данных, Web-cepenc или класс, реализующий нужные интерфейсы (рис. 13.8). Например, в качестве источника данных можно выбрать класс Customeroatasource (листинг 13.3), аналогичный тому, что мы уже использовали в предыдущем разделе (рис. 13.9). После выбора источника данных можно выбрать остальные поля привязки (рис. 13.10).

Листинг 13.3 Класс Cu.,r…-KrU/3ta.-5oji»’M

public class CustomerDataSource : BindingList<Custcmer>

{

public CustomerDataSource{)

{

this.Add(new Customer(0, "Mr. Zero", 10.0M)); this.Addfnew Customer(1, "Mr. One", 15.0M)); this.Add(new Customer(2, "Mr. Two", 20.0M) ) ;

Рис. 13.9. Класс CustomerDataSource как источник данных

 

Рис. 13.10. Выбор значения поля DisplayMember

Литература:

Агуров П. В. C#. Разработка компонентов в MS Visual Studio 2005/2008. – СПб.: БХВ-Петербург, 2008. — 480 е.: ил.

По теме:

  • Комментарии