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

Gewusst wie: Aktualisieren einer Datenquelle mit Daten eines Hoststeuerelements

 

Sie können ein Hoststeuerelement an eine Datenquelle binden und die Datenquelle mit den Änderungen aktualisieren, die im Steuerelement an den Daten vorgenommen werden. In diesem Prozess gibt es zwei Hauptschritte:

  1. Aktualisieren der In-Memory-Datenquelle mit den geänderten Daten im Steuerelement. In der Regel ist die In-Memory-Datenquelle ein DataSet, eine DataTable oder ein anderes Datenobjekt.

  2. Aktualisieren der Datenbank mit den geänderten Daten in der In-Memory-Datenquelle. Dies trifft nur zu, wenn die Datenquelle mit einer Back-End-Datenbank verbunden ist, beispielsweise einer SQL Server- oder Microsoft Office Access-Datenbank.

Weitere Informationen über Hoststeuerelemente und Datenbindung finden Sie unter Übersicht über Hostelemente und Hoststeuerelemente und Binden von Daten an Steuerelemente in Office-Projektmappen.

Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokumentebene und VSTO-Add-In-Projekte für Excel und Word. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.

Standardmäßig speichern Hoststeuerelemente, die eine einfache Datenbindung ermöglichen (z. B. Inhaltssteuerelemente auf einem Word-Dokument oder NamedRange-Steuerelemente auf einem Excel-Arbeitsblatt), keine Datenänderungen in der In-Memory-Datenquelle. Das heißt, wenn ein Endbenutzer einen Wert in einem Hoststeuerelement ändert und anschließend das Steuerelement verlässt, wird der neue Wert im Steuerelement nicht automatisch in der Datenquelle gespeichert.

Um die Daten in der Datenquelle zu speichern, können Sie Code erstellen, mit dem die Datenquelle als Reaktion auf ein bestimmtes Ereignis zur Laufzeit aktualisiert wird. Sie können das Steuerelement aber auch so konfigurieren, dass die Datenquelle automatisch aktualisiert wird, wenn sich der Wert im Steuerelement ändert.

ListObject-Änderungen an der In-Memory-Datenquelle müssen nicht gespeichert werden. Wenn Sie ein ListObject-Steuerelement an Daten binden, speichert das ListObject-Steuerelement automatisch Änderungen in der In-Memory-Datenquelle, ohne dass zusätzlicher Code benötigt wird.

So aktualisieren Sie die In-Memory-Datenquelle zur Laufzeit

  • Rufen Sie die WriteValue-Methode des Binding-Objekts auf, über das das Steuerelement an die Datenquelle gebunden ist.

    Im folgenden Beispiel werden Änderungen, die an einem NamedRange-Steuerelement auf einem Excel-Arbeitsblatt vorgenommen wurden, in der Datenquelle gespeichert. Für dieses Beispiel wird davon ausgegangen, dass Sie ein NamedRange-Steuerelement namens namedRange1 haben, dessen Value2-Eigenschaft an ein Feld in einer Datenquelle gebunden ist.

    this.namedRange1.DataBindings["Value2"].WriteValue();
    

Sie können ein Steuerelement auch so konfigurieren, dass es die In-Memory-Datenquelle automatisch aktualisiert. In einem Projekt auf Dokumentebene ist dies mithilfe von Code oder mit dem Designer möglich. In einem VSTO Add-In-Projekt müssen Sie Code verwenden.

So legen Sie fest, dass ein Steuerelement die In-Memory-Datenquelle automatisch über Code aktualisiert

  1. Verwenden Sie den System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged -Modus des Binding-Objekts, über das das Steuerelement an die Datenquelle gebunden ist. Es gibt zwei Optionen zum Aktualisieren der Datenquelle:

    • Um die Datenquelle zu aktualisieren, wenn das Steuerelement validiert wird, legen Sie diese Eigenschaft auf System.Windows.Forms.DataSourceUpdateMode.OnValidation fest.

    • Um die Datenquelle zu aktualisieren, wenn sich der Wert der datengebundenen Eigenschaft des Steuerelements ändert, legen Sie diese Eigenschaft auf System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged fest.

      System_CAPS_noteHinweis

      Die System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged-Option gilt nicht für Word-Hoststeuerelemente, da Word keine Benachrichtigungen über Dokument- oder Steuerelementänderungen bereitstellt. Diese Option kann jedoch für Windows Forms-Steuerelemente auf Word-Dokumenten verwendet werden.

    Im folgenden Beispiel wird ein NamedRange-Steuerelement so konfiguriert, dass die Datenquelle automatisch aktualisiert wird, wenn sich der Wert im Steuerelement ändert. Für dieses Beispiel wird davon ausgegangen, dass Sie ein NamedRange-Steuerelement namens namedRange1 haben, dessen Value2-Eigenschaft an ein Feld in einer Datenquelle gebunden ist.

    this.namedRange1.DataBindings["Value2"].DataSourceUpdateMode = 
        DataSourceUpdateMode.OnPropertyChanged;
    

So legen Sie mit dem Designer fest, dass ein Steuerelement die In-Memory-Datenquelle automatisch aktualisiert

  1. Öffnen Sie in Visual Studio das Word-Dokument oder die Excel-Arbeitsmappe im Designer.

  2. Klicken Sie auf das Steuerelement, von dem die Datenquelle automatisch aktualisiert werden soll.

  3. Erweitern Sie im Fenster Eigenschaften die (DataBindings)-Eigenschaft.

  4. Klicken Sie neben der (Advanced)-Eigenschaft auf die Schaltfläche mit den Auslassungszeichen (VisualStudioEllipsesButton-Bildschirmabbildung).

  5. Klicken Sie im Dialogfeld Formatierung und erweiterte Bindung auf die Dropdownliste Datenquellen-Aktualisierungsmodus, und wählen Sie einen der folgenden Werte aus:

    • Um die Datenquelle zu aktualisieren, wenn das Steuerelement validiert wird, wählen Sie OnValidation aus.

    • Um die Datenquelle zu aktualisieren, wenn sich der Wert der datengebundenen Eigenschaft des Steuerelements ändert, wählen Sie OnPropertyChanged aus.

      System_CAPS_noteHinweis

      Die OnPropertyChanged-Option gilt nicht für Word-Hoststeuerelemente, da Word keine Benachrichtigungen über Dokument- oder Steuerelementänderungen bereitstellt. Diese Option kann jedoch für Windows Forms-Steuerelemente auf Word-Dokumenten verwendet werden.

  6. Schließen sie das Dialogfeld Formatierung und erweiterte Bindung.

Wenn die In-Memory-Datenquelle mit einer Datenbank verknüpft ist, müssen Sie die Datenbank mit den Änderungen an der Datenquelle aktualisieren. Weitere Informationen zum Aktualisieren einer Datenbank finden Sie unter Speichern von Daten in Datasets und Gewusst wie: Aktualisieren von Daten mit einem TableAdapter.

So aktualisieren Sie die Datenbank

  1. Rufen Sie die EndEdit-Methode der BindingSource-Instanz für das Steuerelement auf.

    Die BindingSource-Instanz wird automatisch generiert, wenn Sie einem Dokument oder einer Arbeitsmappe zur Entwurfszeit ein datengebundenes Steuerelement hinzufügen. Die BindingSource-Instanz verbindet das Steuerelement mit dem typisierten Dataset im Projekt. Weitere Informationen finden Sie unter Übersicht über die BindingSource-Komponente.

    Für das folgende Codebeispiel wird vorausgesetzt, dass das Projekt eine BindingSource-Instanz namens customersBindingSource enthält.

    this.customersBindingSource.EndEdit();
    
  2. Rufen Sie im Projekt die Update-Methode des generierten TableAdapter auf.

    Die TableAdapter-Instanz wird automatisch generiert, wenn Sie einem Dokument oder einer Arbeitsmappe zur Entwurfszeit ein datengebundenes Steuerelement hinzufügen. Die TableAdapter-Instanz verbindet das typisierte Dataset im Projekt mit der Datenbank. Weitere Informationen finden Sie unter Übersicht über TableAdapters.

    Für das folgende Codebeispiel wird vorausgesetzt, dass eine Verbindung mit der Customers-Tabelle der Northwind-Datenbank besteht und dass das Projekt einen TableAdapter namens customersTableAdapter sowie ein typisiertes Dataset namens northwindDataSet enthält.

    this.customersTableAdapter.Update(this.northwindDataSet.Customers);
    
Anzeigen: