![]() |
|
Программирование >> Привязка данных
Привязка данных Эта глава основана на материалах главы 26, в которой описаны различные способы извлечения и изменения данных, и посвящена представлению данных для пользователей с привязкой данных к различным элементам управления Windows. Точнее говоря, здесь будут обсуждаться следующие вопросы: □ отображение данных с помощью элемента управления DataGridView; □ возможности привязки данных .NET и как они работают; □ как использовать проводник по серверу Server Explorer для создания соединения и генерации класса DataSet (не написав ни единой строки кода); □ как использовать проверку попаданий и рефлексию строк DataGrid. Коды примеров этой главы доступны на прилагаемом компакт-диске. Элемент управления DataGridView Элемент управления DataGrid, доступный начиная с ранних выпусков .NET, был вполне функциональным, но имел множество недоработок, которые делали его неподходящим для применения в коммерческих приложениях, например, отсутствовала возможность вывода графических изображений и раскрывающихся элементов, блокировка столбцов и тому подобное. Этот элемент управления был не вполне полноценным, поэтому многие независимые поставщики предлагали собственные сеточные компоненты, которые компенсировали эти недостатки и представляли гораздо более широкую функциональность. В .NET 2.0 появился дополнительный сеточный элемент управления - DataGridView. Он восполнил многие недостатки своего предшественника и добавил важную функциональность, которая до этого была реализована лишь в продуктах независимых поставщиков. Этот элемент оснащен такими же средствами привязки данных, как и старый DataGrid, а потому может работать совместно с классами Array, DataTable, DataView или DataSet либо компонентами, реализующими интерфейс IListSource или IList. Элемент управления DataGridView обеспечивает возможности разнообразного представления одних и тех же данных. В простейшем случае отображаемые данные (такие как из DataSet) указываются установкой значений свойств DataSource и DataMember. Отметим, что этот элемент управления не может подставляться вместо DataGrid, потому что его программный интерфейс полностью отличается от интерфейса DataGrid. К тому же он предлагает более широкие возможности, о которых мы и поговорим в этой главе. Отображение табличных данных В главе 19 было представлено множество способов выбора данных и чтения их в таблицы, хотя отображались они очень примитивным способом - с использованием Console.WriteLine(). Следующий пример демонстрирует, как извлечь данные и отобразить их в элементе управления DataGridView. Для этой цели мы создадим новое приложение DisplayTabularData, внешний вид которого показан на рис. 32.1. ![]() Рис. 32.1. Внешний вид приложения DisplayTabularData Это простое приложение выбирает каждую запись из таблицы Customer базы данных Northwind и отображает эти записи пользователю в элементе управления DataGridView. Ниже показан код этого примера (исключая код определения формы и элемента управления). using System; using System.Configuration; using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.Windows.Forms; namespace DisplayTabularData partial class Form1: Form public Form1() InitializeComponent(); private void getData Click(object sender, EventArgs e) string customers = SELECT * FROM Customers ; using (SqlConnection con = new SqlConnection (ConfigurationManager. ConnectionStrings[ northwind ].ConnectionString)) DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(customers, con); da.Fill(ds, Customers ); dataGridView.AutoGenerateColumns = true; dataGridView.DataSource = ds; dataGridView.DataMember = Customers ; Форма состоит из кнопки getData, в результате щелчка на которой вызывается метод getData Click(), показанный в коде примера. При этом конструируется объект SqlConnection, использующий свойство ConnectionStrings класса ConfigurationManager. Далее создается набор данных и заполняется на основе таблицы базы данных с помощью объекта DataAdapter. Затем эти данные отображаются элементом управления DataGridView за счет установки свойств DataSource и DataMember. Отметим, что свойству AutoGenerateColumns также присваивается значение true, поскольку это гарантирует, что пользователь что-то увидит. Если этот флаг не установлен, все столбцы придется создавать самостоятельно. Источники данных Элемент управления DataGridView предлагает гибкий способ отображения данных; в дополнение к установке DataSource равным DataSet, а DataMember - равным имени отображаемой таблицы, свойство DataSource может указывать на любой из следующих источников: □ массив (визуальная таблица может быть связана с любым одномерным массивом); □ DataTable; □ DataView; □ DataSet или DataViewManager; □ компоненты, реализующие интерфейс IListSource; □ компоненты, реализующие интерфейс IList; □ любой обобщенный класс коллекции или объект, унаследованный от обобщенного класса коллекции. В последующих разделах будут представлены примеры применения каждого из упомянутых источников данных. Отображение данных из массива На первый взгляд это кажется простым. Нужно создать массив, наполнить его некоторыми данными и установить свойство DataSource элемента управления DataGridView. Вот пример кода: string[] stuff=new string[] { One , Two , Three }; dataGridView.DataSource = stuff; Если источник данных включает множество возможных таблиц-кандидатов (как в случае с DataSet или DataViewManager), также понадобится установить свойство DataMember. Можно заменить этим кодом код события getData Click из предыдущего примера. Проблема с этим кодом проявляется в отображении данных (рис. 32.2). Вместо отображения строк, определенных в массиве, таблица показывает длины этих строк. Причина состоит в том, что когда массив используется в качестве источника данных для DataGridView, то он ищет первое общедоступное свойство объекта, содержащегося в массиве, вместо строкового значения. Первое (и единственное) общедоступное свойство строки - ![]() Рис. 32.2. Проблема, связанная с примером кода
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |