Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MU_Prakticheskie_raboty_OPI.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
9.91 Mб
Скачать

2.1.4 Отображение данных из класса DataSet

C DataSourse = DataSet можно выполнить навигацию по отношениям внутри DataSet в пределах одного экрана.

Слева от каждой записи появляется знак «+», что указывает на управляемое отношение между заказчиками и заказами. При щелчке на знаке «+», отображается список отношений (скрывается, если он был ранее отображен). Щелчок на имени отношения позволяет перейти к связанным записям.

Открывшийся элемент управления DataGrid также включает пару новых пиктограмм в правом верхнем углу. Пиктограмма со стрелкой влево позволяет перейти к родительской записи и возвращает экран к первоначальному раскрытому состоянию, чтобы показать/скрыть детальную информацию о родительской записи в строке заголовка.

2.1.5 Отображение данных из массива

IListSource имеет только один метод – GetList(), который возвращает интерфейс IList. В свою очередь IList реализуют многие классы, такие как Array, ArrayList и StringCollection.

Предупреждение: если источник данных DataGrid служит StringCollection, то в визуальной таблице отображаются длины строк, а не их текст.

2.2 Привязка данных (DataBinding).

Процесс связывания элемента управления с источником данных называется привязкой данных (data binding). В технологии .NET можно связать данные с большинством свойств элемента управления, а не только с отображаемым текстом.

Простая привязка.

Элемент управления, поддерживающий простую привязку, обычно отображает одно значение за раз, как это делает текстовое поле или переключатель. Рассмотрим на примере, как можно связать столбец из DataSet с TextBox:

DataSet ds = CreateDataSet();

textBox1.DataBindings.Add("Text", ds, "Products.ProductName");

Вывод данных в текстовое поле без возможности прокрутки не всегда удобен. Чтобы избежать подобных неудобств используются объекты, привязывающие данные.

Объекты привязывающие данные (BindingContext)

Иерархия классов объектов, обеспечивающих привязку данных, приведена на рисунке 6.4. Объекты, используемые для привязки, выделены серым.

Рисунок 6.4– Иерархия классов объектов, обеспечивающих привязку данных.

Свойство DataBinding – это экземпляр класса ControlBindingsCollection

textBox1.DataBindings.Add("Text", ds, "Products.ProductName");

Эта строка привязывает объект Binding к ControlBindingsCollection. Метод Add() создает новый экземпляр объекта Binding на основании параметра, переданного методу, и добавляет его к коллекции привязок.

BindingContext

Каждая форма Windows Form имеет свойство BindingContext. Объект BindingContext включают коллекцию экземпляров BindingManagerBase (рисунок 6.5). Эти экземпляры создаются и добавляются к объекту диспетчера привязки в момент связывания элемента управления с данными.

Рисунок 6.5

BindingContext может включать несколько источников данных, помещенных в оболочку либо CurrencyManager, либо PropertyManager. Решение о том, какой именно класс использовать, основывается на самом источнике данных.

Если источник данных включает список элементов, такой как DataTable, DataView, или же любой объект, реализующий интерфейс IList, применяется CurrencyManager. CurrencyManager может поддерживать текущую позицию внутри источника данных. Если же источник данных возвращает только одно значение, в BindingContext помещается PropertyManager.

Для конкретного источника данных CurrencyManager или PropertyManager создается лишь однажды. Если два текстовых поля привязаны к строке DataTable, в контексте привязки будет создан только один CurrencyManager.

Каждый элемент управления, добавленный к форме, связывается с менеджером привязки формы, так что все элементы управления разделяют один и тот же его экземпляр. Когда элемент управления создается, его свойство BindingContext равно null. Когда же он добавляется к коллекции Controls формы, его свойство BindingContext устанавливается равным BindingContext формы.

Рисунок 6.6– Добавление к Сontroll объекта Binding

Рисунок 6.6 примерно иллюстрирует, что происходит, когда объект Binding добавляется к Control. Привязка устанавливает связь между элементом управления и источником данных, которая поддерживается внутри BindingContext формы (или самого элемента управления). Изменение внутри источника данных отображаются в элементе управления, как если бы они были выполнены в нем самом.

Binding

Этот класс связывает свойство элемента управления с членом источника данных. Когда член изменяется, свойство элемента управления обновляется, чтобы отобразить это изменение. Также верно противоположное – если обновляется текст в текстовом поле, это изменение отображается в источнике данных.

Привязка может быть выполнена из любого столбца на любое свойство элемента управления.

CurrencyManager и PropertyManager

При создании объекта Binding, также создаются соответствующие объекты CurrencyManager и PropertyManager, предоставляя возможность первоначальной привязки данных источника. Назначение этого класс – определять позицию текущей записи внутри источника данных, а также координировать все первоначальные привязки при изменении текущей записи.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]