Реклама:

Пример. Пусть набор данных nd1 содержит только таблицу Kaf. Схема набора данных приведена на рис. 3.11. Пусть адаптер данных aPrep связан с таблицей Prep в базе данных VUZ.mdb; приведем текст команды SelectComand этого адаптера:

SELECT FIO, KK, KP, Rank FROM Prep

Добавим в схему набора данных nd1 таблицу Prep и зальем ее данными. Пусть в форме размещен элемент управления dataGrid1, не связанный ни с какой таблицей данных, как это можно увидеть из рис. 3.12. Свяжем этот элемент управления с таблицей Prep набора данных nd1.

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 3.11

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 3.12

Поставленную задачу можно решить несколькими способами. Рассмотрим три варианта кода.

Вариант 1.

//---заносим в набор схему таблицы,

//---определяемой адаптером aPrep

aPrep.FillSchema(nd1, System.Data.SchemaType.Mapped, "Prep");

//---заливаем данные в таблицу набора данных Prep

aPrep.Fill(nd1, "Prep");

//---связываем элемент управления dataGrid

//--- с набором данных и таблицей Prep dataGrid1.DataSource = nd1; dataGrid1.DataMember = "Prep";

Вариант 2. Этот вариант мало чем отличается от предыдущего, кроме вида метода

FillSchema:

//---заносим в набор схему таблицы, //---определяемой адаптером aPrep

aPrep.FillSchema(nd1, System.Data.SchemaType.Mapped); //---заливаем данные в таблицу Prep набора данных aPrep.Fill(nd1, "Prep");

//---связываем элемент управления dataGrid //--- с набором данных и таблицей Prep dataGrid1.DataSource = nd1; dataGrid1.DataMember = "Prep";

Вариант 3. Этот вариант использует ту особенность метода Fill адаптера данных, что если таблицы, в которую адаптер пытается залить данные, в наборе данных нет, то схема этой таблицы сначала добавляется в схему набора данных, а потом уже производится заливка данных. Иными словами, в этом варианте удалось обойтись без использования метода FillSchema адаптера.

//---заносим в набор схему таблицы Prep

//---и заливаем в нее данные

aPrep.Fill(nd1);

//---связываем элемент управления dataGrid

//---с набором данных и таблицей Prep

dataGrid1.DataSource = nd1;

dataGrid1.DataMember = "Prep";

После выполнения каждого из перечисленных вариантов кода форма примет вид, показанный на рис. 3.13.

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 3.13

Для того чтобы убедиться, насколько изменилась схема набора данных ndl, достаточно выдать его схему в XML-файл, выполнив следующий код:

string fn = System.IO.Directory.GetCurrentDirectory() +

"\\nd_shema-l.xml"; ndl.WriteXml(fn, System.Data.XmlWriteMode.WriteSchema);

Ниже приводится содержимое файла nd_shemal:

<?xml version="l.0" standalone="yes"?> <nd xmlns="http://www.tempuri.org/nd.xsd">

<xs:schema id="nd" targetNamespace="http://www.tempuri.org/nd.xsd" xmlns:mstns="http://www.tempuri.org/nd.xsd" xmlns="http://www.tempuri.org/nd.xsd" xmlns:xs="http://www.w3.org/200l/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified"> <xs:element name="nd" msdata:IsDataSet="true" msdata:Locale=


⇐ Предыдущая страница| |Следующая страница ⇒