Freigeben über


Binden von Daten an Steuerelemente

Aktualisiert: Juli 2008

Betrifft

Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office.

Projekte auf Dokumentebene

  • Excel 2003

  • Excel 2007

  • Word 2003

  • Word 2007

Projekte auf Anwendungsebene

  • Excel 2007

  • Word 2007

Weitere Informationen finden Sie unter Verfügbare Features nach Anwendung und Projekttyp.

Sie können Windows Forms-Steuerelemente und Hoststeuerelemente in einem Microsoft Office Word-Dokument oder einem Microsoft Office Excel-Arbeitsblatt an eine Datenquelle binden, sodass die Steuerelemente die Daten automatisch anzeigen.

Ab Visual Studio 2008 Service Pack 1 (SP1) können Sie Daten an Steuerelemente in Projekten auf Anwendungsebene binden. Wenn Sie SP1 nicht installiert haben, können Sie Daten nur in Projekten auf Dokumentebene an Steuerelemente binden.

Hoststeuerelemente erweitern Objekte in den Word- und Excel-Objektmodellen, beispielsweise Inhaltssteuerelemente in Word und benannte Bereiche in Excel. Weitere Informationen finden Sie unter Übersicht über Hostelemente und Hoststeuerelemente.

Sowohl in Windows Forms als auch bei Hoststeuerelementen wird das Windows Forms-Datenbindungsmodell verwendet, das sowohl die einfache Datenbindung als auch die komplexe Datenbindung an Datenquellen wie Datasets und Datentabellen unterstützt. Umfassende Informationen über das Datenbindungsmodell in Windows Forms finden Sie unter Datenbindung und Windows Forms.

Einfache Datenbindung

Eine einfache Datenbindung besteht dann, wenn eine Steuerelementeigenschaft an ein einzelnes Datenelement (z. B. einen Wert in einer Datentabelle) gebunden wird. Zum Beispiel verfügt das NamedRange-Steuerelement über eine Value2-Eigenschaft, die an ein Feld in einem Dataset gebunden werden kann. Wenn sich das Feld im Dataset ändert, ändert sich auch der Wert im benannten Bereich. Alle Hoststeuerelemente, mit Ausnahme des XMLNodes-Steuerelements, unterstützen einfache Datenbindung. Das XMLNodes-Steuerelement ist eine Auflistung und unterstützt daher keine Datenbindung.

Zum Ausführen einer einfachen Datenbindung an ein Hoststeuerelement fügen Sie der DataBindings-Eigenschaft des Steuerelements ein Binding hinzu. Ein Binding-Objekt stellt die einfache Bindung zwischen einem Eigenschaftenwert des Steuerelements und dem Wert eines Datenelements dar.

Im folgenden Beispiel wird veranschaulicht, wie die Value2-Eigenschaft an ein Datenelement in einem Projekt auf Dokumentebene gebunden wird. Dieses Codebeispiel ist Teil eines umfangreicheren Beispiels für die DataBindings-Eigenschaft.

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);

Exemplarische Vorgehensweisen, in denen die einfache Datenbindung veranschaulicht wird, finden Sie unter Exemplarische Vorgehensweise: Einfache Datenbindung in Projekten auf Dokumentebene (ein Projekt auf Dokumentebene) und Exemplarische Vorgehensweise: Einfache Datenbindung in Projekten auf Anwendungsebene (ein Projekt auf Anwendungsebene).

Komplexe Datenbindung

Eine komplexe Datenbindung besteht dann, wenn eine Steuerelementeigenschaft an mindestens zwei Datenelemente (z. B. mehrere Spalten in einer Datentabelle) gebunden wird. Das ListObject-Steuerelement für Excel ist das einzige Hoststeuerelement, das komplexe Datenbindung unterstützt. Zudem unterstützen viele Windows Forms-Steuerelemente die komplexe Datenbindung, z. B. das DataGridView-Steuerelement.

Zum Ausführen einer komplexen Datenbindung legen Sie die DataSource-Eigenschaft des Steuerelements auf ein Datenquellenobjekt fest, das von einer komplexen Datenbindung unterstützt wird. Beispielsweise kann die DataSource-Eigenschaft des ListObject-Steuerelements an mehrere Spalten in einer Datentabelle gebunden werden. Alle Daten in der Datentabelle werden im ListObject-Steuerelement angezeigt, und wenn sich die Daten in der Datentabelle ändern, ändert sich auch ListObject. Eine Liste der Datenquellen, die Sie für die komplexe Datenbindung verwenden können, finden Sie unter Von Windows Forms unterstützte Datenquellen.

Im folgenden Codebeispiel wird ein DataSet mit zwei DataTable-Objekten erstellt und eine der Tabellen mit Daten aufgefüllt. Im Code wird dann das ListObject an die Tabelle gebunden, die Daten enthält. Dieses Beispiel bezieht sich auf ein Excel-Projekt auf Dokumentebene.

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", missing], "Customers");

    // Bind the list object to the Customers table.
    list1.AutoSetDataBoundColumnHeaders = true;
    list1.DataSource = ordersDataSet;
    list1.DataMember = "Customers";
}

Exemplarische Vorgehensweisen, in denen die komplexe Datenbindung veranschaulicht wird, finden Sie unter Exemplarische Vorgehensweise: Komplexe Datenbindung in Projekten auf Dokumentebene (ein Projekt auf Dokumentebene) und Exemplarische Vorgehensweise: Komplexe Datenbindung in Projekten auf Anwendungsebene (ein Projekt auf Anwendungsebene).

Anzeigen von Daten in Dokumenten und Arbeitsmappen

In Projekten auf Dokumentebene können Sie mithilfe des Datenquellenfensters Dokumenten oder Arbeitsmappen datengebundene Steuerelemente auf die gleiche einfache Weise wie für Windows Forms hinzufügen. Weitere Informationen über die Verwendung des Datenquellenfensters finden Sie unter Übersicht über das Anzeigen von Daten und Datenquellenfenster.

Ziehen von Steuerelementen aus dem Datenquellenfenster

In einem Dokument wird ein Steuerelement erstellt, wenn Sie ein Objekt aus dem Datenquellenfenster hineinziehen. Der Typ des erstellten Steuerelements ist davon abhängig, ob Sie eine einzelne oder mehrere Spalten mit Daten binden.

In Excel wird auf dem Arbeitsblatt für jedes einzelne Feld ein NamedRange-Steuerelement erstellt, und zudem wird für jeden Datenbereich, der mehrere Zeilen und Spalten enthält, ein ListObject-Steuerelement erstellt. Sie können diese Standardeinstellung ändern, indem Sie im Datenquellenfenster das Feld oder die Tabelle auswählen und dann aus der Dropdownliste ein anderes Steuerelement wählen.

In Word 2007 wird Dokumenten ein ContentControl-Steuerelement hinzugefügt. Der Typ des Inhaltssteuerelements hängt vom Datentyp des von Ihnen ausgewählten Felds ab. In Word 2003 wird Dokumenten ein Bookmark-Steuerelement hinzugefügt.

Binden von Daten in Projekten auf Dokumentebene zur Entwurfszeit

In den folgenden Themen werden Beispiele für das Binden von Daten zur Entwurfszeit dargestellt:

Binden von Daten in Projekten auf Anwendungsebene

In Projekten auf Anwendungsebene können Steuerelemente nur zur Laufzeit hinzugefügt werden. In den folgenden Themen werden Beispiele für das Binden von Daten zur Laufzeit dargestellt:

Aktualisieren von Daten, die an Hoststeuerelemente gebunden sind

Die Datenbindung zwischen einer Datenquelle und einem Hoststeuerelement schließt eine bidirektionale Datenaktualisierung ein. Bei der einfachen Datenbindung werden Änderungen an der Datenquelle automatisch im Hoststeuerelement widergespiegelt. Änderungen des Hoststeuerelements erfordern jedoch einen expliziten Aufruf zum Aktualisieren der Datenquelle. Dies ist darauf zurückzuführen, dass in einigen Fällen Änderungen in einem datengebundenen Feld nur dann akzeptiert werden, wenn gleichzeitig auch Änderungen in einem anderen datengebundenen Feld ausgeführt werden. Es können z. B. zwei Felder vorhanden sein, eines für das Alter und ein weiteres für die Jahre an Berufserfahrung. Die Berufserfahrung darf das Alter nicht übersteigen. Ein Benutzer kann nur dann das Alter von 50 auf 25 und die Berufserfahrung von 30 auf 10 ändern, wenn die Änderungen gleichzeitig ausgeführt werden. Um dieses Problem zu beheben, werden Felder mit einfacher Datenbindung erst aktualisiert, wenn die Aktualisierungen explizit in Form von Code gesendet werden.

Um eine Datenquelle von Hoststeuerelementen mit einfacher Datenbindung zu aktualisieren, müssen Aktualisierungen an die Datenquelle im Datenspeicher (wie z. B. ein DataSet oder DataTable) und an die Back-End-Datenbank gesendet werden, wenn in Ihrer Projektmappe eine solche verwendet wird.

Sie müssen die Datenquelle im Arbeitsspeicher nicht explizit aktualisieren, wenn Sie mit dem ListObject-Steuerelement eine komplexe Datenbindung ausführen. In diesem Fall werden Änderungen automatisch ohne zusätzlichen Code an die Datenquelle im Arbeitsspeicher gesendet.

Weitere Informationen finden Sie unter Gewusst wie: Aktualisieren einer Datenquelle mit Daten eines Hoststeuerelements.

Siehe auch

Aufgaben

Gewusst wie: Erstellen eines einfach gebundenen Steuerelements in einem Windows Form

Gewusst wie: Aktualisieren von Daten mit einem TableAdapter

Konzepte

Datenbindung und Windows Forms

Übersicht über das Anzeigen von Daten

Übersicht über das Speichern von Daten

Zwischenspeichern von Daten

Weitere Ressourcen

Parallelitätssteuerung in ADO.NET

Daten in Office-Lösungen

Änderungsprotokoll

Date

Versionsgeschichte

Grund

Juli 2008

Informationen über das Binden von Daten in Add-Ins auf Anwendungsebene hinzugefügt.

SP1-Featureänderung.