Привязка данных к элементам управления в решениях Office
Вы можете привязать элементы управления Windows Forms и элементы управления ведущего приложения в документе Microsoft Office Word или листе Microsoft Office Excel к источнику данных, чтобы эти элементы управления автоматически отображали данные. Можно привязывать данные к элементам управления в проектах уровня документа и уровня приложения.
Область применения. Сведения в этом разделе относятся к проектам уровня документа и проектам надстроек VSTO. См. сведения о функциях, доступных по Приложение Office и типу проекта.
Элементы управления ведущего приложения расширяют объекты, которые находятся в объектных моделях Word и Excel, такие как элементы управления контентом в Word и именованные диапазоны в Excel. Дополнительные сведения см. в обзоре элементов узла и элементов управления узлами.
Элементы управления Windows Forms и элементы управления ведущего приложения используют модель привязки данных Windows Forms, которая поддерживает как простую привязку данных , так и сложную привязку данных к источникам данных, например к таблицам и наборам данных. Полные сведения о модели привязки данных в Windows Forms см. в разделе "Привязка данных" и "Windows Forms".
Простая привязка данных
Простая привязка данных присутствует, когда свойство элемента управления привязывается к одному элементу данных, например к значению в таблице данных. Например, элемент управления NamedRange имеет свойство Value2 , которое можно привязать к полю в наборе данных. При изменении поля в наборе данных также изменяется значение в именованном диапазоне. Все элементы управления ведущего приложения, за исключением элемента управления XMLNodes , поддерживают простую привязку данных. Элемент управления XMLNodes представляет собой коллекцию, и поэтому он не поддерживает привязку данных.
Чтобы выполнить простую привязку данных к элементу управления ведущего приложения, добавьте Binding в свойство DataBindings
этого элемента управления. Объект Binding представляет простую привязку между значением свойства элемента управления и значением элемента данных.
Следующий пример демонстрирует способ привязки свойства Value2 к элементу данных в проекте уровня документа.
Binding binding1 = new Binding("Value2", ds, "Customers.Names", true);
namedRange1.DataBindings.Add(binding1);
Пошаговые руководства, демонстрирующие простую привязку данных, см . в пошаговом руководстве. Простая привязка данных в проекте уровня документа для проекта уровня документа и пошагового руководства. Простая привязка данных в проекте надстройки VSTO для проекта надстройки VSTO.
Сложная привязка данных
Сложная привязка данных присутствует, когда свойство элемента управления привязывается к нескольким элементам данных, например к нескольким столбцам в таблице данных. Элемент управления ListObject для Excel — единственный элемент управления ведущего приложения, который поддерживает сложную привязку данных. Существует также множество элементов управления Windows Forms, поддерживающих сложную привязку данных, например элемент управления DataGridView .
Для выполнения сложной привязки данных задайте в свойстве DataSource
элемента управления объект источника данных, который поддерживается сложной привязкой данных. Например, свойство DataSource элемента управления ListObject можно привязать к нескольким столбцам в таблице данных. Все данные в таблице данных отображаются в элементе управления ListObject , и при изменении данных в таблице данных свойство ListObject также изменяется. Список источников данных, которые можно использовать для сложной привязки данных, см. в разделе "Источники данных", поддерживаемые Windows Forms.
В следующем примере кода создается DataSet с двумя объектами DataTable и заполняется данными одна из таблиц. Затем этот код привязывает ListObject к таблице, содержащей данные. Этот пример предназначен для проекта уровня документа Excel.
private void ListObject_DataSourceAndMember()
{
// Create a DataSet and two DataTables.
DataSet ordersDataSet = new DataSet("ordersDataSet");
DataTable tableCustomers = new DataTable("Customers");
DataTable tableProducts = new DataTable("Products");
ordersDataSet.Tables.Add(tableCustomers);
ordersDataSet.Tables.Add(tableProducts);
// Add a data to the Customers DataTable.
tableCustomers.Columns.Add(new DataColumn("LastName"));
tableCustomers.Columns.Add(new DataColumn("FirstName"));
DataRow dr = tableCustomers.NewRow();
dr["LastName"] = "Chan";
dr["FirstName"] = "Gareth";
tableCustomers.Rows.Add(dr);
// Create a list object.
Microsoft.Office.Tools.Excel.ListObject list1 =
this.Controls.AddListObject(
this.Range["A1"], "Customers");
// Bind the list object to the Customers table.
list1.AutoSetDataBoundColumnHeaders = true;
list1.DataSource = ordersDataSet;
list1.DataMember = "Customers";
}
Пошаговое руководство, демонстрирующее сложную привязку данных, см . в пошаговом руководстве. Сложные привязки данных в проекте уровня документа для проекта уровня документа.
Отображение данных в документах и книгах
В проектах уровня документа с помощью окна Источники данных можно легко добавлять элементы управления с привязкой к данным в документы или книги, так же, как это делается для форм Windows Forms. Дополнительные сведения об использовании окна источников данных см. в статье "Привязка элементов управления Windows Forms к данным в Visual Studio " и "Добавление новых источников данных".
Перетащите элементы управления из окна "Источники данных"
Элемент управления создается в документе, когда вы перетаскиваете в него объект из окна Источники данных . Тип создаваемого элемента управления зависит от того, связывается ли один столбец данных или несколько столбцов данных.
В Excel элемент управления NamedRange создается в листе для каждого отдельного поля, а элемент управления ListObject создается для каждого диапазона данных, содержащего несколько строк и столбцов. Вы можете изменить этот порядок по умолчанию, выбрав таблицу или поле в окне Источники данных , а затем выбрав другой элемент управления из раскрывающегося списка.
Элемент управления ContentControl добавляется в документ. Тип элемента управления контентом зависит от типа данных выбранного поля.
Привязка данных в проектах уровня документа во время разработки
В следующих разделах содержатся примеры привязки данных во время разработки.
Практическое руководство. Заполнение листов данными из базы данных
Практическое руководство. Заполнение документов данными из базы данных
Практическое руководство. Заполнение документов данными из объектов
Практическое руководство. Заполнение документов данными из служб
Практическое руководство. Прокрутка записей базы данных на листе
Привязка данных в проектах надстроек VSTO
В проектах надстроек VSTO вы можете добавлять элементы управления только во время выполнения. В следующих разделах содержатся примеры привязки данных во время выполнения.
Обновление данных, привязанных к элементам управления узлами
Привязка данных между источником данных и элементом управления ведущего приложения подразумевает два способа обновления данных. В простой привязке данных изменения в источнике данных автоматически отражаются в элементе управления ведущего приложения, но при изменениях в элементе управления ведущего приложения необходимо явно вызывать обновление источника данных. Причина заключается в том, что в некоторых случаях изменения в одном поле с привязкой к данным не принимаются, пока не будут дополнены изменениями в другом поле с привязкой к данным. Например, у вас может быть два поля, одно для возраста, а другое для стажа. Стаж не может превышать возраст. Пользователь не может изменить возраст с 50 на 25, а затем изменить стаж с 30 на 10, если он делает эти изменения в одно и то же время. Для разрешения этой проблемы поля с простой привязкой данных не обновляются, пока обновления не будут явно отправлены в коде.
Для обновления источника данных из элементов управления ведущего приложения с поддержкой простой привязки данных вы должны отправить обновления в источник данных в памяти (такой как DataSet или DataTable) и во внутреннюю базу данных, если она используется в решении.
Вам не нужно явно обновлять источник данных в памяти, если выполняется сложная привязка данных с помощью элемента управления ListObject . В этом случае изменения автоматически отправляются в источник данных в памяти без дополнительного кода.
Дополнительные сведения см. в статье "Практическое руководство. Обновление источника данных с данными из элемента управления узлом".
Связанный контент
- Привязка данных и Windows Forms
- Практическое руководство. Создание простого элемента управления с привязкой к Windows Form
- Привязка элементов управления Windows Forms к данным в Visual Studio
- Сохранение данных обратно в базу данных
- Обновление данных с помощью адаптера таблицы
- Кэшировать данные
- Данные в решениях Office