Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 590
Эндрю Троелсен
static void Main(string[] args) {
…
// Печать DataTable с помощью 'объекта чтения таблиц' .
PrintTable(carsInventoryDS.Tables["Inventory"]);
}
Сохранение DataSet (и DataTable) в формате XML
В завершение рассмотрения текущего примера напомним, что как DataSet, так и DataTable предлагают поддержку методов WriteXml() и ReadXml(). Метод WriteXml() позволяет сохранить содержимое объекта в локальном файле (или вообще в любом типе System.IO.Stream) в виде XML-документа. Метод ReadXml() позволяет прочитать информацию о состоянии DataSet (или DataTable) из имеющегося XML-документа. Кроме того, как DataSet, так и DataTable поддерживают WriteXmlSchema() и ReadXmlSchema() для сохранения и загрузки файлов
static void Main(string [] args) {
…
// Сохранение DataSet в виде XML.
carsInventoryDS.WriteXml("carsDataSet.xml");
carsInventoryDS.WriteXmlSchema("carsDataSet.xsd");
// Очистка DataSet и вывод содержимого (должно быть пустым).
carsInventoryDS.Сlear();
PrintDataSet(carsInventoryDS);
// Загрузка и печать DataSet.
carsInventoryDS.ReadXml("carsDataSet.xml");
PrintDataSet(carsInventoryDS);
}
Если открыть сохраненный файл carsDataSet.xml, вы увидите, что в нем представлены все столбцы таблицы, закодированные в виде XML-элементов.
‹?xml version="1.0" standalone="yes"?›
‹Car_x0020_Inventory›
‹Inventory›
‹CarID›0‹/CarID›
‹Make›BMW‹/Make›
‹Color›черный‹/Color
‹PetName›Hamlet‹/PetName›
‹/Inventory›
‹Inventory›
‹CarID›1‹/CarID›
‹Make›Saab‹/Make›
‹Color›красный‹/Color›
‹PetName›Sea Brеeze‹/PеtName›
‹/Inventory›
‹/Car_x0020_Inventory›
Наконец, напомним, что тип DataColumn поддерживает свойство ColumnMapping, которое можно использовать для управления представлением столбца в XML-формате. Значением, устанавливаемым для этого свойства по умолчанию, является MappingType.Element. Однако можно потребовать, чтобы столбец CarID представлялся XML-атрибутом, как это сделано ниже в обновленной версии объекта carIDColumn для DataColumn.
Static void Main(string[] args) {
…
DataColumn carIDColumn = new DataColumn("CarID", typeof(int));
…
carIDColumn.ColumnMapping = MappingType.Attribute;
}
Тогда вы обнаружите следующий XML-код.
‹?xml version="1.0" standalone="yes"?›
‹Car_x0020_Inventory›
‹Inventory CarID="0"›
‹Make›BMW‹/Make›
‹Color›черный‹/Color›
‹PetName›Hamlet‹/PetName›
‹/Inventory›
‹Inventory CarID="1"›
‹Make›Saab‹/Make›
‹Color›красный‹/Color›
‹PetName›Sea Breeze‹/PetName›
‹/Inventory›
‹/Car_x0020_Inventory›
Исходный код. Проект SimpleDataSet размещен в подкаталоге, соответствующем главе 22.
Привязка DataTable к интерфейсу пользователя
Теперь, когда мы обсудили процесс взаимодействия с DataSets в общем, давайте рассмотрим соответствующий пример приложения Windows Forms. Нашей целью является построение формы, отображающей содержимое DataTable в рамках элемента управления DataGridView. На рис. 22.13 показано окно исходного пользовательского интерфейса проекта.