Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Binden von Daten an Steuerelemente in Office-Projektmappen

 

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

Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokumentebene und VSTO-Add-In-Projekte. Siehe Verfügbare Funktionen nach Office-Anwendung und Projekttyp.

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 in Hoststeuerelementen wird das Windows Forms-Datenbindungsmodell verwendet, das sowohl einfache Datenbindung als auch 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.

Link zu Video Eine entsprechende Videodemo finden Sie unter How Do I: Consume Database Data in Excel?.

Eine einfache Datenbindung besteht dann, wenn eine Steuerelementeigenschaft an ein einzelnes Datenelement (z. B. einen Wert in einer Datentabelle) gebunden ist. Zum Beispiel hat das NamedRange-Steuerelement die 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.

Um eine einfache Datenbindung an ein Hoststeuerelement auszuführen, fügen Sie der DataBindings-Eigenschaft des Steuerelements ein Binding-Objekt hinzu. Ein Binding-Objekt stellt die einfache Bindung zwischen einem Eigenschaftswert des Steuerelements und dem Wert eines Datenelements dar.

Im folgenden Beispiel wird veranschaulicht, wie die Value2-Eigenschaft in einem Projekt auf Dokumentebene an ein Datenelement gebunden wird.

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

Exemplarische Vorgehensweisen, in denen einfache Datenbindung veranschaulicht wird, finden Sie unter Exemplarische Vorgehensweise: Einfache Datenbindung in Projekten auf Dokumentebene für ein Projekt auf Dokumentebene sowie unter Exemplarische Vorgehensweise: Einfache Datenbindung in einem VSTO-Add-In-Projek für ein VSTO-Add-In-Projekt.

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

Um eine komplexe Datenbindung auszuführen, legen Sie die DataSource-Eigenschaft des Steuerelements auf ein Datenquellenobjekt fest, das von komplexer Datenbindung unterstützt wird. Beispielsweise kann die DataSource-Eigenschaft des ListObject-Steuerelements an mehrere Spalten 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 aus ListObject-Steuerelement. Eine Liste der Datenquellen, die Sie für 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 wird mit Daten aufgefüllt. Im Code wird dann das ListObject-Steuerelement an die Tabelle gebunden, die Daten enthält. Dieses Beispiel gilt für ein Excel-Projekt auf Dokumentebene.

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";
}

Exemplarische Vorgehensweisen, in denen komplexe Datenbindung veranschaulicht wird, finden Sie unter Exemplarische Vorgehensweise: Komplexe Datenbindung in Projekten auf Dokumentebene für ein Projekt auf Dokumentebene sowie unter Exemplarische Vorgehensweise: Komplexe Datenbindung in einem VSTO-Add-In-Projekt für ein VSTO-Add-In-Projekt.

In Projekten auf Dokumentebene können Sie mithilfe des Fensters Datenquellen Dokumenten oder Arbeitsmappen datengebundene Steuerelemente auf die gleiche einfache Weise wie für Windows Forms hinzufügen. Weitere Informationen über die Verwendung des Fensters Datenquellen finden Sie unter Binden von Windows Forms-Steuerelementen an Daten in Visual Studio und Datenquellenfenster.

Auf einem Dokument wird ein Steuerelement erstellt, wenn Sie aus dem Fenster Datenquellen ein Objekt auf das Dokument ziehen. Der Typ des erstellten Steuerelements ist davon abhängig, ob Sie an eine einzelne Datenspalte oder an mehrere Datenspalten binden.

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

Ein ContentControl-Steuerelement wird den Dokumenten hinzugefügt. Der Typ des Inhaltssteuerelements hängt vom Datentyp des von Ihnen ausgewählten Felds ab.

In VSTO-Add-in-Projekten können Sie Steuerelemente nur zur Laufzeit hinzufügen. In den folgenden Themen werden Beispiele für das Binden von Daten zur Laufzeit erläutert:

Eine Datenbindung zwischen einer Datenquelle und einem Hoststeuerelement bedingt eine bidirektionale Datenaktualisierung. Bei einer einfachen Datenbindung werden Änderungen in der Datenquelle automatisch für das Hoststeuerelement übernommen, aber Änderungen im Hoststeuerelement erfordern einen expliziten Aufruf, damit die Datenquelle aktualisiert wird. 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 vorgenommen werden. Es könnten z. B. zwei Felder vorhanden sein: eines für das Alter und eines für die Jahre an Berufserfahrung. Die Berufserfahrung kann das Alter nicht übersteigen Ein Benutzer kann nur dann das Alter von 50 in 25 und die Berufserfahrung von 30 in 10 ändern, wenn er die Änderungen gleichzeitig vornimmt. Um dieses Problem zu beheben, werden Felder mit einfacher Datenbindung erst aktualisiert, wenn die Aktualisierungen explizit durch Code gesendet wurden.

Um eine Datenquelle aus Hoststeuerelementen zu aktualisieren, die einfache Datenbindung ermöglichen, müssen Sie Aktualisierungen an die In-Memory-Datenquelle (etwa ein DataSet oder eine DataTable) und an die Back-End-Datenbank senden, wenn in Ihrer Projektmappe eine solche verwendet wird.

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

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

Anzeigen: