Поделиться через


Привязка данных к элементам управления в решениях Office

Можно осуществлять привязку элементов управления Windows Forms и элементов управления ведущего приложения в документе Microsoft Office Word или на листе Microsoft Office Excel к источнику данных. Таким образом элементы управления будут автоматически отображать данные.В проектах уровня приложения и уровня документа можно привязывать данные к элементам управления.

Применение. Сведения этого раздела применяются к проектам уровня документа и уровня приложения для Office 2013 и Office 2010. См. раздел Доступность функций по типам приложений Office и проектов.

Элементы управления ведущего приложения расширяют объекты, которые находятся в объектной модели Word и Excel, например, элементы управления содержимым в Word и элементы управления именованного диапазона в Excel.Дополнительные сведения см. в разделе Общие сведения о ведущих элементах и элементах управления ведущего приложения.

Windows Forms и элементы управления ведущего приложения используют модель привязки данных Windows Forms, которая поддерживает как простую привязку данных, так и сложную привязку данных к источникам данных, например, к наборам данных и к таблицам данных.Дополнительные сведения о модели привязки данных в Windows Forms см. в разделе Связывание данных и Windows Forms.

ссылка на видео Для просмотра связанных демонстрационных видеороликов перейдите по ссылке How Do I: Consume Database Data in Excel?.

Простая привязка данных

Простая привязка данных существует, если свойство элемента управления привязано к простому элементу данных, например к значению в таблице данных.Например, элемент управления NamedRange имеет свойство Value2, которое может быть привязано к полю в наборе данных.Если поле в наборе данных изменяется, значение в именованном диапазоне также изменяется.Все элементы управления ведущего приложения, за исключением элемента управления XMLNodes, поддерживают простую привязку данных.Элемент управления XMLNodes является коллекцией, поэтому он не поддерживает привязку данных.

Для выполнения простой привязки данных к элементу управления ведущего приложения добавьте в свойство [DataBindings] элемента управления объект T:System.Windows.Forms.Binding.Объект Binding предоставляет простую привязку между значением свойства элемента управления и значением элемента данных.

В следующем примере показано выполнение привязки свойства Value2 к элементу данных в проекте уровня документа.

Dim binding1 As New Binding("Value2", ds, "Customers.Names", True)
namedRange1.DataBindings.Add(binding1)
Binding binding1 = new Binding("Value2", ds, "Customers.Names", true);
namedRange1.DataBindings.Add(binding1);

Пошаговые руководства с примерами простой привязки данных см. в разделах Пошаговое руководство. Простая привязка данных в проекте уровня документа для проекта уровня документа и Пошаговое руководство. Простая привязка данных в проекте уровня приложения для проекта уровня приложения.

Сложная привязка данных

Сложная привязка данных существует, если свойство элемента управления привязано к нескольким элементам данных, например к нескольким столбцам в таблице данных.Элементом управления ListObject для Excel является только элемент управления ведущего приложения, который поддерживает сложную привязку данных.Существует множество элементов управления Windows Forms, которые поддерживают сложную привязку данных, например, элемент управления DataGridView.

Для выполнения сложной привязки данных задайте в качестве значения свойства DataSource элемента управления объект источника данных, который поддерживает сложную привязку данных.Например, свойство DataSource элемента управления ListObject, которое можно привязать к нескольким столбцам в таблице данных.Все данные в таблице данных отображаются в элементе управления ListObject, и при изменении данных в таблице элемент управления ListObject также изменяется.Список источников данных, которые можно использовать для сложной привязки см. в разделе Источники данных, поддерживаемые Windows Forms.

В следующем примере кода создается DataSet с двумя объектами DataTable и заполняется данными одна из таблиц.Затем код связывает объект ListObject с таблицей, содержащей данные.Это пример для проекта уровня документа Excel.

    Private Sub ListObject_DataSourceAndMember()
        ' Create a DataSet and two DataTables.
        Dim ordersDataSet As New DataSet("ordersDataSet")
        Dim tableCustomers As New DataTable("Customers")
        Dim tableProducts As 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"))
        Dim dr As DataRow = tableCustomers.NewRow()
        dr("LastName") = "Chan"
        dr("FirstName") = "Gareth"
        tableCustomers.Rows.Add(dr)

        ' Create a list object.
        Dim List1 As Microsoft.Office.Tools.Excel.ListObject = _
            Me.Controls.AddListObject(Me.Range( _
            "A1"), "Customers")

        ' Bind the list object to the Customers table.
        List1.AutoSetDataBoundColumnHeaders = True
        List1.DataSource = ordersDataSet
        List1.DataMember = "Customers"

    End Sub

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и Окно "Источники данных".

ad7sfx3w.collapse_all(ru-ru,VS.110).gifПеретаскивание элементов управления из окна "Источники данных"

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

Для Excel элемент управления NamedRange создается на листе для каждого отдельного поля, а элемент управления ListObject создается для каждого диапазона данных, содержащего несколько строк и столбцов.Чтобы изменить параметры по умолчанию, выберите таблицу или поле в окне Источники данных и затем выберите в раскрывающемся списке другой элемент управления.

В документы добавляется элемент управления ContentControl.Тип элемента управления содержимым зависит от типа данных выбранного поля.

ad7sfx3w.collapse_all(ru-ru,VS.110).gifПривязка данных в проектах уровня документа во время разработки

В следующих разделах показаны примеры привязки данных во время разработки:

ad7sfx3w.collapse_all(ru-ru,VS.110).gifПривязка данных в проектах уровня приложения

В проектах уровня приложения элементы управления добавляются только во время выполнения.В следующих разделах показаны примеры привязки данных во время выполнения:

Обновление данных, привязанных к элементам управления ведущего приложения

При связывании данных между источником данных и элементом управления ведущего приложения существует два способа обновления данных.В случае простой привязки данных изменения в источнике данных автоматически отражаются в элементе управления ведущего приложения, но при изменениях в элементе управления ведущего приложения необходимо явно вызывать обновление источника данных.Причина в том, что в некоторых случаях изменения в одном поле связанных данных не принимаются, пока не будут дополнены изменениями в другом поле связанных данных.Например, предположим, что имеется два поля, одно для возраста, а второе для стажа работы.Стаж работы не может быть больше возраста.Пользователь не может изменить возраст с 50 на 25, и только потом уменьшить стаж с 30 до 10; такие изменения необходимо вносить одновременно.Чтобы разрешить эту проблему, поля с простой привязкой данных не обновляются до тех пор, пока код явно не отправит запрос на обновление.

Для обновления источника данных от элементов управления ведущего приложения, которые позволяют выполнять простую привязку данных, необходимо отправить обновленные данные в источник данных, находящийся в памяти (например, DataSet или DataTable) и в базу данных (если она используется в решении).

Если выполняется сложная привязка данных с помощью элемента управления ListObject, то не требуется явно обновлять источник данных в памяти.В этом случае изменения автоматически отправляются в источник данных, находящийся в памяти, без написания дополнительного кода.

Дополнительные сведения см. в разделе Практическое руководство. Обновление источника данных с помощью данных из элемента управления ведущего приложения.

См. также

Задачи

Практическое руководство. Создание элемента управления с простой привязкой в форме Windows Forms

Практическое руководство. Обновление данных с помощью адаптера таблицы

Основные понятия

Связывание данных и Windows Forms

Привязка элементов управления Windows Forms к данным в Visual Studio

Сохранение данных в наборах данных

Кэширование данных

Другие ресурсы

Инструкции: Данные базы данных потребления в Excel?

Данные в решениях Office