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

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.Die Steuerelemente veranschaulichen eine Master/Detail-Beziehung zwischen Tabellen in einer SQL Server-Datenbank.

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

In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:

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

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

  • Anzeigen des Aktionsbereichs beim Öffnen der Anwendung.

System_CAPS_noteHinweis

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.Die von Ihnen verwendete Visual Studio-Edition und die Einstellungen legen diese Elemente fest.Weitere Informationen finden Sie unter Customizing Development Settings in Visual Studio.

Vorbereitungsmaßnahmen

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:

  • 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 SQL Server-Beispieldatenbank Northwind.

  • Lese- und Schreibberechtigungen für die SQL Server-Datenbank.

Der erste Schritt besteht darin, ein Word-Dokumentprojekt zu erstellen.

So erstellen Sie ein neues Projekt

  1. Erstellen Sie ein Word-Dokumentprojekt mit dem Namen My Word Actions Pane.Wählen Sie im Assistenten Neues Dokument erstellen aus.

    Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Office-Projekten in Visual Studio.

    Visual Studio öffnet das neue Word-Dokument im Designer und fügt dem Projektmappen-Explorer das My Word Actions Pane-Projekt hinzu.

Für diese exemplarische Vorgehensweise benötigen Sie ein Aktionsbereich-Steuerelement mit datengebundenen Windows Forms-Steuerelementen.Fügen Sie eine Datenquelle zum Projekt hinzu, und ziehen Sie Steuerelemente aus dem Datenquellenfenster in das Aktionsbereich-Steuerelement.

So fügen Sie ein Aktionsbereich-Steuerelement hinzu

  1. Wählen Sie im Projektmappen-Explorer das Projekt My Word Actions Pane aus.

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

  3. Klicken Sie im Dialogfeld Neues Element hinzufügen auf Aktionsbereich-Steuerelement. Nennen Sie das Steuerelement ActionsControl, und klicken Sie auf Hinzufügen.

So fügen Sie dem Projekt eine Datenquelle hinzu

  1. Wenn das Datenquellen nicht sichtbar ist, zeigen Sie sie durch, auf der Menüleiste auf und Ansicht auswählen, Weitere Fenster, Datenquellen.

    System_CAPS_noteHinweis

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

  2. Klicken Sie auf Neue Datenquelle hinzufügen, um den Assistent zum Konfigurieren von Datenquellen zu starten.

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

  4. Wählen Sie eine Datenverbindung zur Northwind SQL Server-Beispieldatenbank aus, oder fügen Sie mithilfe der Schaltfläche Neue Verbindung eine neue Verbindung hinzu.

  5. Klicken Sie auf Weiter.

  6. Deaktivieren Sie ggf. die Option zum Speichern der Verbindung, und klicken Sie dann auf Weiter.

  7. Erweitern Sie im Fenster Datenbankobjekte den Knoten Tabellen.

  8. Aktivieren Sie die Kontrollkästchen neben der Tabelle Suppliers und der Tabelle Products.

  9. Klicken Sie auf Fertig stellen.

Der Assistent fügt dem Datenquellenfenster die Tabelle Suppliers und die Tabelle Products hinzu.Außerdem wird dem Projekt ein typisiertes Dataset hinzugefügt, das im Projektmappen-Explorer sichtbar ist.

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

  1. Erweitern Sie im Datenquellenfenster die Tabelle Suppliers.

  2. Klicken Sie im Knoten Company Name auf den Dropdownpfeil, und wählen Sie ComboBox.

  3. Ziehen Sie CompanyName aus dem Datenquellenfenster zum Aktionsbereich-Steuerelement.

    Im Aktionsbereich-Steuerelement wird ein ComboBox-Steuerelement erstellt.Gleichzeitig werden dem Projekt in der Komponentenleiste eine BindingSource mit dem Namen SuppliersBindingSource, ein Tabellenadapter und ein DataSet hinzugefügt.

  4. Wählen Sie in der Komponentenleiste den Eintrag SuppliersBindingNavigator aus, und drücken Sie ENTF.In dieser exemplarischen Vorgehensweise verwenden Sie SuppliersBindingNavigator nicht.

    System_CAPS_noteHinweis

    Beim Löschen des SuppliersBindingNavigator wird nicht der gesamte dafür generierte Code gelöscht.Sie können diesen Code entfernen.

  5. Verschieben Sie das Kombinationsfeld unter die Beschriftung, und ändern Sie die Size-Eigenschaft auf 171, 21.

  6. Erweitern Sie im Fenster Datenquellen die Tabelle Products, die ein untergeordnetes Element der Tabelle Suppliers darstellt.

  7. Klicken Sie im Knoten ProductName auf den Dropdownpfeil, und wählen Sie ListBoxaus.

  8. Ziehen Sie ProductName in das Aktionsbereich-Steuerelement.

    Im Aktionsbereich-Steuerelement wird ein ListBox-Steuerelement erstellt.Gleichzeitig werden dem Projekt in der Komponentenleiste eine BindingSource mit dem Namen ProductBindingSource und ein Tabellenadapter hinzugefügt.

  9. Verschieben Sie das Listenfeld unter die Beschriftung, und ändern Sie die Size-Eigenschaft auf 171,95.

  10. Ziehen Sie aus der Toolbox eine Button in das Aktionsbereich-Steuerelement, und platzieren Sie diese unter dem Listenfeld.

  11. Klicken Sie mit der rechten Maustaste auf die Button, klicken Sie im Kontextmenü auf Eigenschaften, und ändern Sie die folgenden Eigenschaften:

    Property

    Wert

    Name

    Insert

    Text

    Insert

  12. Passen Sie die Größe des Benutzersteuerelements den Steuerelementen entsprechend an.

Fügen Sie zum Einrichten der Datenquelle dem Load-Ereignis des Aktionsbereich-Steuerelements Code hinzu, damit das Steuerelement mit Daten aus der DataTable aufgefüllt wird, und legen Sie die DataSource-Eigenschaft und die DataMember-Eigenschaft für jedes Steuerelement fest.

So laden Sie das Steuerelement mit Daten

  1. Fügen Sie im Load-Ereignishandler der ActionsControl-Klasse 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 platzieren.Weitere Informationen zum Erstellen von Ereignishandlern finden Sie unter Gewusst wie: Erstellen von Ereignishandlern in Office-Projekten.

    this.Load += new EventHandler(ActionsControl_Load);
    

So legen Sie die Datenbindungseigenschaften der Steuerelemente fest

  1. Wählen Sie das CompanyNameComboBox-Steuerelement aus.

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

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

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

  5. Wählen Sie das ProductNameListBox-Steuerelement aus.

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

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

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

Die nächste Aufgabe besteht darin, die Daten von den gebundenen Steuerelementen zu lesen und eine Tabelle im Word-Dokument zu füllen.Zunächst erstellen Sie eine Prozedur zum Formatieren der Tabellenüberschriften und fügen 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 Tabellenüberschriften.

    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 ActionsControl-Klasse eine Methode, die ggf. eine Tabelle erstellt und der Tabelle dann Daten aus dem Aktionsbereich hinzufügt.

    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 folgenden Code zum Click-Ereignishandler der Schaltfläche Einfügen 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 in den Load-Ereignishandler der ActionsControl-Klasse einfügen.

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

Der Aktionsbereich wird sichtbar, wenn Steuerelemente hinzugefügt werden.

So zeigen Sie den Aktionsbereich an

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

  2. Erstellen Sie wie im folgenden Beispiel eine neue Instanz des Steuerelements im oberen Teil der ThisDocument-Klasse.

    private ActionsControl actions = new ActionsControl();
    
  3. Fügen Sie dem Startup-Ereignishandler von ThisDocument wie im folgenden Beispiel gezeigt Code hinzu.

    this.ActionsPane.Controls.Add(actions);
    

Nun können Sie Ihr Dokument testen, um zu überprüfen, ob der Aktionsbereich beim Öffnen des Dokuments angezeigt wird.Überprüfen Sie die Master/Detail-Beziehung der Steuerelemente im Aktionsbereich, und stellen Sie sicher, dass eine Word-Tabelle mit Daten gefüllt wird, 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. Bestätigen Sie, dass der Aktionsbereich angezeigt wird.

  3. Wählen Sie eine Firma im Kombinationsfeld, und stellen Sie sicher, das sich die Elemente des Listenfelds Products ändern.

  4. Wählen Sie ein Produkt, klicken Sie im Aktionsbereich auf Einfügen, und überprüfen Sie, ob die Produktdetails der Word-Tabelle hinzugefügt werden.

  5. Fügen Sie zusätzliche Produkte von verschiedenen Firmen ein.

Nächste Schritte

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

Anzeigen: