Exemplarische Vorgehensweise: Binden von Daten an Steuerelemente in einem Word-Aktionsbereich

In dieser exemplarischen Vorgehensweise wird die Datenbindung an Steuerelemente in einem Aktionsbereich in Word veranschaulicht. Die Steuerelemente zeigen eine Master/Detail-Beziehung zwischen Tabellen in einer SQL Server-Datenbank.

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

In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:

  • Erstellen eines Aktionsbereichs mit Windows Forms-Steuerelementen, die an Daten gebunden sind.

  • Verwenden einer Master-/Detailbeziehung zum Anzeigen von Daten in den Steuerelementen.

  • Zeigen Sie den Aktionsbereich an, wenn die Anwendung geöffnet wird.

Hinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren von Visual Studio-IDE.

Voraussetzungen

Zum Abschließen dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:

  • Eine Edition von Visual Studio, die die Microsoft Office-Entwicklungstools umfasst. Weitere Informationen finden Sie unter Konfigurieren eines Computers zum Entwickeln von Office-Lösungen.

  • Word 2013 oder Word 2010 .

  • Zugriff auf einen Server mit der Northwind SQL Server-Beispieldatenbank.

  • Berechtigungen zum Lesen und Schreiben in die SQL Server-Datenbank.

Erstellen des Projekts

Im ersten Schritt wird ein Word-Dokumentprojekt erstellt.

So erstellen Sie ein neues Projekt

  1. Erstellen Sie ein Word-Dokumentprojekt mit dem Namen "Meine Word-Aktionen". Wählen Sie im Assistenten " Neues Dokument erstellen" aus.

    Weitere Informationen finden Sie unter How to: Create Office projects in Visual Studio.

    Visual Studio öffnet das neue Word-Dokument im Designer und fügt das Projekt "Mein Word-Aktionsbereich" zu Projektmappen-Explorer hinzu.

Hinzufügen von Steuerelementen zum Aktionsbereich

Für diese exemplarische Vorgehensweise benötigen Sie ein Aktionsbereich-Steuerelement, das datengebundene Windows Forms-Steuerelemente enthält. Fügen Sie dem Projekt eine Datenquelle hinzu, und ziehen Sie dann Steuerelemente aus dem Fenster "Datenquellen " auf das Aktionsbereich-Steuerelement.

So fügen Sie ein Aktionsbereich-Steuerelement hinzu

  1. Wählen Sie in Projektmappen-Explorer das Projekt "Mein Word-Aktionsbereich" aus.

  2. Klicken Sie im Menü Projekt auf Neues Element hinzufügen.

  3. Wählen Sie im Dialogfeld "Neues Element hinzufügen" die Option "Aktionsbereich-Steuerelement" aus, nennen Sie es "ActionsControl", und klicken Sie dann auf "Hinzufügen".

So fügen Sie dem Projekt eine Datenquelle hinzu

  1. Wenn das Fenster "Datenquellen" nicht sichtbar ist, zeigen Sie es an, indem Sie auf der Menüleiste "Andere Windows-Datenquellen> anzeigen">auswählen.

    Hinweis

    Wenn "Datenquellen anzeigen" nicht verfügbar ist, klicken Sie auf das Word-Dokument, und aktivieren Sie es erneut.

  2. Klicken Sie auf "Neue Datenquelle hinzufügen", um den Datenquellenkonfigurations-Assistenten zu starten.

  3. Wählen Sie "Datenbank" aus, und klicken Sie dann auf "Weiter".

  4. Wählen Sie eine Datenverbindung mit der SQL Server-Datenbank des Northwind-Beispiels aus, oder fügen Sie eine neue Verbindung mithilfe der Schaltfläche "Neue Verbinden ion" hinzu.

  5. Klicken Sie auf Weiter.

  6. Deaktivieren Sie die Option, um die Verbindung zu speichern, wenn sie ausgewählt ist, und klicken Sie dann auf "Weiter".

  7. Erweitern Sie den Knoten "Tabellen " im Fenster "Datenbankobjekte ".

  8. Aktivieren Sie das Kontrollkästchen neben den Tabellen "Lieferanten " und "Produkte ".

  9. Klicken Sie auf Fertig stellen.

    Der Assistent fügt die Tabelle "Lieferanten" und "Produkte" zum Fenster "Datenquellen" hinzu. Außerdem wird ihrem Projekt ein typisiertes Dataset hinzugefügt, das in Projektmappen-Explorer sichtbar ist.

So fügen Sie einem Aktionsbereich-Steuerelement datengebundene Windows Forms-Steuerelemente hinzu

  1. Erweitern Sie im Fenster "Datenquellen " die Tabelle "Lieferanten ".

  2. Klicken Sie auf den Dropdownpfeil auf dem Knoten "Firmenname", und wählen Sie "ComboBox" aus.

  3. Ziehen Sie "CompanyName " aus dem Fenster "Datenquellen " in das Aktionsbereich-Steuerelement.

    Ein ComboBox Steuerelement wird im Aktionsbereich-Steuerelement erstellt. Gleichzeitig wird ein benannter BindingSource SuppliersBindingSource, ein Tabellenadapter und ein DataSet Tabellenadapter dem Projekt im Komponentenschacht hinzugefügt.

  4. Wählen Sie in der Taskleiste "Komponente" aus, und drücken Sie SuppliersBindingNavigator ENTF. Sie verwenden die SuppliersBindingNavigator in dieser exemplarischen Vorgehensweise nicht.

    Hinweis

    Durch das Löschen wird nicht SuppliersBindingNavigator der gesamte Code entfernt, der für ihn generiert wurde. Sie können diesen Code entfernen.

  5. Verschieben Sie das Kombinationsfeld so, dass es sich unter der Beschriftung befindet, und ändern Sie die Size-Eigenschaft auf 171, 21.

  6. Erweitern Sie im Fenster "Datenquellen " die Tabelle "Produkte ", die ein untergeordnetes Element der Tabelle "Lieferanten " ist.

  7. Klicken Sie auf den Dropdownpfeil auf dem Knoten "ProductName", und wählen Sie "ListBox" aus.

  8. Ziehen Sie "ProductName " in das Aktionsbereich-Steuerelement.

    Ein ListBox Steuerelement wird im Aktionsbereich-Steuerelement erstellt. Gleichzeitig werden dem Projekt im Komponentenbereich ein BindingSource benannter ProductBindingSource und ein Tabellenadapter hinzugefügt.

  9. Verschieben Sie das Listenfeld so, dass es sich unter der Beschriftung befindet, und ändern Sie die Size-Eigenschaft auf 171.95.

  10. Ziehen Sie eine Button Aus der Toolbox auf das Aktionsbereich-Steuerelement, und platzieren Sie sie unter dem Listenfeld.

  11. Klicken Sie mit der rechten Maustaste auf die ButtonSchaltfläche "Eigenschaften" im Kontextmenü, und ändern Sie die folgenden Eigenschaften.

    Eigenschaft Wert
    Name Einfügen
    Text Einfügen
  12. Ändern Sie die Größe des Benutzersteuerelements so, dass es an die Steuerelemente angepasst wird.

Einrichten der Datenquelle

Um die Datenquelle einzurichten, fügen Sie dem Load Ereignis des Aktionsbereich-Steuerelements Code hinzu, um das Steuerelement mit Daten aus dem DataTableSteuerelement auszufüllen, und legen Sie die DataSource eigenschaften für DataMember jedes Steuerelement fest.

So laden Sie das Steuerelement mit Daten

  1. Fügen Sie im Load Ereignishandler der ActionsControl Klasse den folgenden Code hinzu.

    private void ActionsControl_Load(object sender, EventArgs e)
    {
        this.suppliersTableAdapter.Fill(this.northwindDataSet.Suppliers);
        this.productsTableAdapter.Fill(this.northwindDataSet.Products);
    }
    
  2. In C# müssen Sie den Ereignishandler an das Load Ereignis anfügen. Sie können diesen Code im ActionsControl Konstruktor nach dem Aufruf von InitializeComponent. Weitere Informationen zum Erstellen von Ereignishandlern finden Sie unter How to: Create event handlers in Office projects.

    this.Load += new EventHandler(ActionsControl_Load);
    

So legen Sie datenbindungseigenschaften der Steuerelemente fest

  1. Wählen Sie das CompanyNameComboBox-Steuerelement.

  2. Klicken Sie im Eigenschaftenfenster auf die Schaltfläche rechts neben der DataSource-Eigenschaft , und wählen Sie "suppliersBindingSource" aus.

  3. Klicken Sie rechts neben der DisplayMember-Eigenschaft auf die Schaltfläche, und wählen Sie "CompanyName" aus.

  4. Erweitern Sie die DataBindings-Eigenschaft , klicken Sie rechts neben der Text-Eigenschaft auf die Schaltfläche, und wählen Sie "Keine" aus.

  5. Wählen Sie das ProductNameListBox-Steuerelement.

  6. Klicken Sie im Eigenschaftenfenster auf die Schaltfläche rechts neben der DataSource-Eigenschaft , und wählen Sie "productsBindingSource" aus.

  7. Klicken Sie rechts neben der DisplayMember-Eigenschaft auf die Schaltfläche, und wählen Sie "ProductName" aus.

  8. Erweitern Sie die DataBindings-Eigenschaft , klicken Sie rechts neben der SelectedValue-Eigenschaft auf die Schaltfläche, und wählen Sie "Keine" aus.

Hinzufügen einer Methode zum Einfügen von Daten in eine Tabelle

Die nächste Aufgabe besteht darin, die Daten aus den gebundenen Steuerelementen zu lesen und eine Tabelle in Ihrem Word-Dokument aufzufüllen. Erstellen Sie zunächst eine Prozedur zum Formatieren der Überschriften in der Tabelle, und fügen Sie dann die AddData Methode zum Erstellen und Formatieren einer Word-Tabelle hinzu.

So formatieren Sie die Tabellenüberschriften

  1. Erstellen Sie in der ActionsControl Klasse eine Methode zum Formatieren der Überschriften der Tabelle.

    static void SetHeadings(Microsoft.Office.Interop.Word.Cell tblCell, string text)
    {
        tblCell.Range.Text = text;
        tblCell.Range.Font.Bold = 1;
        tblCell.Range.ParagraphFormat.Alignment = 
            Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
    }
    

So erstellen Sie die Tabelle

  1. Schreiben Sie in der Klasse eine Methode, mit der ActionsControl eine Tabelle erstellt wird, wenn sie noch nicht vorhanden ist, und fügen Sie der Tabelle Daten aus dem Aktionsbereich hinzu.

    private void AddData(System.Data.DataRow row, string companyName)
    {
        object missing = System.Type.Missing;
    
        // Create a table if it doesn't already exist.
        if (Globals.ThisDocument.Tables.Count == 0)
        {
            try
            {
                // Create a table.
                Microsoft.Office.Interop.Word.Table tbl = Globals.ThisDocument.Tables.Add
                    (Globals.ThisDocument.Application.Selection.Range, 1, 4, ref missing, ref missing);
    
                // Insert headings.
                SetHeadings(tbl.Cell(1, 1), "Company Name");
                SetHeadings(tbl.Cell(1, 2), "Product Name");
                SetHeadings(tbl.Cell(1, 3), "Quantity");
                SetHeadings(tbl.Cell(1, 4), "Unit Price");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Problem creating Products table: " + ex.Message, 
                    "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    
        // Add data from data row to the table.
        Microsoft.Office.Interop.Word.Selection selection = Globals.ThisDocument.Application.Selection;
    
        if (selection.Tables.Count > 0)
        {
            Microsoft.Office.Interop.Word.Row newRow = Globals.ThisDocument.Tables[1].Rows.Add(ref missing);
    
            newRow.Range.Font.Bold = 0;
    
            newRow.Range.ParagraphFormat.Alignment = 
                Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;
    
            newRow.Cells[4].Range.ParagraphFormat.Alignment =
                Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;
    
            newRow.Cells[1].Range.Text = companyName;
            newRow.Cells[2].Range.Text = row["ProductName"].ToString();
            newRow.Cells[3].Range.Text = row["QuantityPerUnit"].ToString();
            newRow.Cells[4].Range.Text = Math.Round(Convert.ToDouble(row["UnitPrice"])).ToString("#,##0.00");
        }
        else
        {
            MessageBox.Show("Cursor must be within a table.", 
                "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
    

So fügen Sie Text in eine Word-Tabelle ein

  1. Fügen Sie dem Ereignishandler der Schaltfläche "Einfügen" den Click folgenden Code hinzu.

    private void Insert_Click(object sender, System.EventArgs e)
    {
        System.Data.DataTable tbl = northwindDataSet.Products;
        System.Data.DataRow[] rows;
    
        // Check if a product is selected.
        if (this.productNameListBox.SelectedIndex >= 0)
        {
            System.Data.DataRowView productRow = (System.Data.DataRowView)this.productNameListBox.SelectedItem;
    
            string product = productRow.Row["ProductName"].ToString();
            string company = this.companyNameComboBox.Text;
    
            // Return the data row from the selected product.
            rows = tbl.Select("[ProductName] = '" + product.Replace("'", "''") + "'");
    
            this.AddData(rows[0], company);
        }
        else
        {
            MessageBox.Show("Please select a product.", "Actions Pane", MessageBoxButtons.OK);
        }
    }
    
  2. In C# müssen Sie einen Ereignishandler für das Click Ereignis der Schaltfläche erstellen. Sie können diesen Code im Load Ereignishandler der ActionsControl Klasse platzieren.

    this.Insert.Click += new EventHandler(Insert_Click);
    

Anzeigen des Aktionsbereichs

Der Aktionsbereich wird sichtbar, nachdem die Steuerelemente hinzugefügt wurden.

So zeigen Sie den Aktionsbereich an

  1. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf ThisDocument.vb oder ThisDocument.cs, und klicken Sie dann im Kontextmenü auf "Code anzeigen".

  2. Erstellen Sie eine neue Instanz des Steuerelements oben in der ThisDocument Klasse, damit sie wie im folgenden Beispiel aussieht.

    private ActionsControl actions = new ActionsControl();
    
  3. Fügen Sie dem Startup Ereignishandler ThisDocument Code hinzu, damit er wie im folgenden Beispiel aussieht.

    this.ActionsPane.Controls.Add(actions);
    

Testen der App

Jetzt können Sie Ihr Dokument testen, um zu überprüfen, ob der Aktionsbereich angezeigt wird, wenn das Dokument geöffnet wird. Testen Sie die Master-/Detailbeziehung in den Steuerelementen im Aktionsbereich, und stellen Sie sicher, dass Daten in einer Word-Tabelle aufgefüllt werden, wenn auf die Schaltfläche "Einfügen " geklickt wird.

So testen Sie das Dokument

  1. Drücken Sie F5, um das Projekt auszuführen.

  2. Vergewissern Sie sich, dass der Aktionsbereich sichtbar ist.

  3. Wählen Sie ein Unternehmen im Kombinationsfeld aus, und vergewissern Sie sich, dass sich die Elemente im Listenfeld "Produkte " ändern.

  4. Wählen Sie ein Produkt aus, klicken Sie im Aktionsbereich auf "Einfügen ", und vergewissern Sie sich, dass die Produktdetails der Tabelle in Word hinzugefügt werden.

  5. Fügen Sie zusätzliche Produkte aus verschiedenen Unternehmen ein.

Nächste Schritte

Diese exemplarische Vorgehensweise zeigt die Grundlagen der Bindung von Daten an Steuerelemente in einem Aktionsbereich in Word. Die folgenden Aufgaben könnten sich daran anschließen: