Привязка данных к элементам управления в решениях 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 . В этом случае изменения автоматически отправляются в источник данных в памяти без дополнительного кода.

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