Программирование >>  Привязка данных 

1 ... 3 4 5 [ 6 ] 7 8 9 10


BindingContext

CurrencyManager

CurrencyManager

DataSource

DataSource

Текущая позиция

Рис. 32.16. Объект BindingContext включает коллекцию экземпляров BindingManagerBase

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

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

Чтобы привязать элемент управления к форме, к его свойству BindingContext должен добавиться элемент, представляющий собой экземпляр ControlBindings Collection. Следующий код создает новую привязку:

textBox.DataBindings.Add( Text , ds, Products.ProductName );

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

Control

DataBindingCollection

Binding Property DataSource DataMember 1

Binding Property DataSource DataMember 1


Рис. 32.17. Добавление к Control объекта Binding



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

Binding

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

Привязка может быть выполнена из любого столбца на любое свойство элемента управления. Например, вы можете привязать не только текст в текстовом поле, но также и его цвет. Можно привязать свойства элемента управления к совершенно различным источникам данных; например, цвет ячейки может быть задан в таблице цветов, тогда как данные - в другой таблице.

CurrencyManager и PropertyManager

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


Рис. 32.18. Поля из таблицы Products и способ перемещения между записями

Ниже представлен основной код ScrollingDataBinding.

namespace ScrollingDataBinding {

partial class Form1: Form

public Form1()

InitializeComponent();

private DataSet CreateDataSet()

string customers = SELECT * FROM Products ; DataSet ds = new DataSet();

using (SqlConnection con = new SqlConnection ( ConfigurationSettings.

ConnectionStrings[ northwind ].ConnectionString))

SqlDataAdapter da = new SqlDataAdapter(customers, con); da.Fill(ds, Products );

return ds;



private void trackBar Scroll(object sender, EventArgs e)

this.BindingContext[ds, Products ].Position = trackBar.Value; private void retrieveButton Click(object sender, EventArgs e)

retrieveButton.Enabled = false;

ds = CreateDataSet();

textName.DataBindings.Add( Text , ds, Products.ProductName ); textQuan.DataBindings.Add( Text , ds, Products.QuantityPerUnit ); trackBar.Minimum = 0;

trackBar.Maximum = this.BindingContext[ds, Products ].Count - 1; textName.Enabled = true; textQuan.Enabled = true; trackBar.Enabled = true;

private DataSet ds;

Механизм прокрутки обеспечивается обработчиком событий trackBar Scroll, который устанавливает позицию BindingContext на текущую позицию бегунка - изменение контекста привязки здесь обновляет данные, отображаемые на экране.

Данные привязаны к двум текстовым полям в обработчике событий retrieveButton Click добавлением выражения привязки данных - здесь свойства Text элементов управления устанавливаются в значения полей источника данных. Можно привязать любое простое свойство элемента управления к элементу источника данных; например, вы можете привязать цвет текста, свойство доступности или любые другие.

Когда данные первоначально извлекаются, значение максимума бегунка прокрутки устанавливается равной количеству записей. Затем в методе прокрутки позиция BindingContext для DataTable устанавливается в текущую позицию бегунка. Это изменяет текущую запись DataTable, так что обновляются все элементы управления, привязанные к текущей записи (в данном примере - два текстовых поля).

Теперь, когда мы узнали, как привязать различные источники данных, такие как массивы, таблицы данных, представления данных, а также прочие разнообразные контейнеры данных, в следующем разделе рассмотрим, как расширения Visual Studio обеспечивают интеграцию доступа к данным в приложениях.

Visual Studio .NET и доступ к данным

В этом разделе мы опишем некоторые способы интеграции данных с графическим интерфейсом пользователя, которые обеспечивает Visual Studio, включая способы создания соединений, выбора некоторых данных, генерации DataSet, а также применение всех сгенерированных объектов для построения простого приложения.

Доступные инструментальные средства позволяют создать подключение к базе данных с помощью классов OleDbConnection или SqlConnection. Выбор класса зависит от типа используемой базы данных. После того, как соединение определено, можно создать DataSet и наполнить его прямо внутри Visual Studio .NET. При этом генерируется файл XSD для DataSet, а также код .cs. В результате получается DataSet, безопасный к типам.

Создание соединения

Для начала создадим новое Windows-приложение, затем - новое соединение с базой данных. Используя проводник серверов Server Explorer (рис. 32.19), можно управлять различными аспектами доступа к данным.



1 ... 3 4 5 [ 6 ] 7 8 9 10

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика