Aktualisieren einer Datenquelle mit Daten aus einem Hoststeuerelement

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 DataTableoder 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 zu Hoststeuerelementen und Datenbindung finden Sie unter Hostelemente und Hoststeuerelemente – Übersicht und Binden von Daten an Steuerelemente in Office-Lösungen.

    Gilt für: Die Informationen in diesem Thema gelten für Projekte auf Dokumentebene und VSTO-Add-In-Projekte für Excel und Word. Weitere Informationen finden Sie unter features available by Office-App lication and project type.

Aktualisieren der Speicherdatenquelle

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

Automatisches Aktualisieren der Speicherdatenquelle

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, das das Steuerelement an die Datenquelle bindet. Es gibt zwei Optionen zum Aktualisieren der Datenquelle:

    • Wenn Sie die Datenquelle aktualisieren möchten, wenn das Steuerelement überprüft 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.

      Hinweis

      Die Option "System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged" gilt nicht für Word-Hoststeuerelemente, da Word keine Benachrichtigungen zu Dokumentänderungen oder Steuerelementänderungen anbietet. 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 screenshot).

  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 OnValidationaus.

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

      Hinweis

      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 .

Aktualisieren der Datenbank

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 zurück in der Datenbank und Aktualisieren von Daten mithilfe eines 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 in der Übersicht über bindingSource-Komponenten.

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

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

    Das TableAdapter-Objekt wird automatisch generiert, wenn Sie einem Dokument oder einer Arbeitsmappe zur Entwurfszeit ein datengebundenes Steuerelement hinzufügen. TableAdapter verbindet das typisierte Dataset in Ihrem Projekt mit der Datenbank. Weitere Informationen finden Sie in der TableAdapter-Übersicht.

    Im folgenden Codebeispiel wird davon ausgegangen, dass Sie über eine Verbindung mit der Tabelle "Customers" in der Northwind-Datenbank verfügen und dass Ihr Projekt einen TableAdapter-Namen und ein typisiertes Dataset mit dem Namen customersTableAdapternorthwindDataSetenthält.

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