Udostępnij za pośrednictwem


Wskazówki: wiązanie danych do kontrolek okienku akcji programu Word

W tym instruktażu przedstawiono wiązania z danymi do formantów w okienku Akcje w programie Word.Kontrole wykazują wzorzec/szczegół relacji między tabelami w bazie danych programu SQL Server.

Zastosowanie: Informacje przedstawione w tym temacie mają zastosowanie do projektów na poziomie dokumentu obsługiwanych w programach Word 2013 i Word 2010. Aby uzyskać więcej informacji, zobacz Funkcje dostępne w aplikacjach pakietu Office i typ projektu.

W przewodniku przedstawiono następujące zagadnienia:

  • Tworzenie okienku Akcje z formantami Windows Forms, które są związane z danymi.

  • Za pomocą Relacja wzorca/szczegółu do wyświetlania danych w formantach.

  • Wyświetla okienko akcji, podczas otwierania aplikacji.

[!UWAGA]

Komputer może pokazać różne nazwy lub lokalizacje dla niektórych użytkowników programu Visual Studio elementów interfejsu w poniższych instrukcjach.Wydanie programu Visual Studio, że masz i ustawień, których używasz określają te elementy.Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.

Wymagania wstępne

Następujące składniki są wymagane do przeprowadzenia tego instruktażu:

  • Edycja programu Visual Studio 2013, która oferuje narzędzia deweloperskie pakietu Microsoft Office. Aby uzyskać więcej informacji, zobacz Konfigurowanie komputera do opracowywania rozwiązań pakietu Office.

  • Word 2013 lub Word 2010.

  • Dostęp do serwera z przykładowej bazy danych Northwind programu SQL Server.

  • Uprawnienia do odczytów i zapisów do bazy danych programu SQL Server.

Tworzenie projektu

Pierwszym krokiem jest utworzenie projektu dokumentu programu Word.

Aby utworzyć nowy projekt

  • Utwórz projekt dokumentu programu Word o nazwie Moje okienko akcji programu Word.W oknie kreatora wybierz Utwórz nowy dokument.

    Aby uzyskać więcej informacji, zobacz Porady: tworzenie projektów Office w Visual Studio.

    Zostanie otwarty nowy dokument programu Word w projektancie programu Visual Studio i dodaje Moje okienko akcji programu Word projekt Solution Explorer.

Dodawanie formantów do okienka Akcje

Do wykonania tej procedury należy formant okienka akcji, który zawiera formanty powiązane z danymi w Windows Forms.Dodawanie źródła danych w projekcie, a następnie przeciągnij formanty z Źródła danych okno, aby formant okienka akcji.

Aby dodać formant okienka Akcje

  1. Wybierz Moje okienku Akcje Word projektu w Solution Explorer.

  2. Na Projekt menu, kliknij przycisk Add New Item.

  3. W Add New Item okno dialogowe, wybierz Formant okienka Akcje, nadaj mu nazwę ActionsControl, a następnie kliknij przycisk Dodaj.

Aby dodać źródło danych do projektu

  1. Jeśli Źródła danych okno nie jest widoczne, wyświetl go, w menu bar, wybierając View, Other Windows, Źródła danych.

    [!UWAGA]

    Jeśli Pokaż źródła danych nie jest dostępny, kliknij dokument programu Word, a następnie sprawdzić ponownie.

  2. Kliknij przycisk Dodać nowe źródło danych zacząć Kreatora konfiguracji źródła danych.

  3. Wybierz bazy danych a następnie kliknij przycisk Dalej.

  4. Wybierz połączenie danych do programu SQL Server bazie danych Northwind, lub dodać nowe połączenie za pomocą Nowego połączenia przycisk.

  5. Kliknij Dalej.

  6. Wyczyść opcję, aby zapisać połączenie, jeśli jest zaznaczone, a następnie kliknij przycisk Dalej.

  7. Rozwiń węzeł tabele węzeł w obiektów bazy danych okna.

  8. Zaznacz pole wyboru obok opcji dostawców i produkty tabele.

  9. Kliknij Zakończ.

Kreator doda dostawców tabeli i produkty do tabeli Źródła danych okna.Dodaje także zestawu danych wpisywanych do swojego projektu, który jest widoczny w Solution Explorer.

Aby dodać formanty Windows Forms powiązanego z danymi na formant okienka Akcje

  1. W Źródła danych okna, rozwiń węzeł dostawców tabeli.

  2. Kliknij strzałkę rozwijania w Nazwy firmy , a następnie wybierz węzeł ComboBox.

  3. Przeciągnij Nazwa firmy z Źródła danych okno, aby formant okienka akcji.

    A ComboBox formant nie zostanie utworzony na formant okienka akcji.W tym samym czasie BindingSource o nazwie SuppliersBindingSource, łączniku tabeli, a DataSet są dodawane do projektu w panelu komponentów.

  4. Wybierz SuppliersBindingNavigator w składnika zasobnik i nacionij klawisz DELETE.Nie korzystać z SuppliersBindingNavigator w tym instruktażu.

    [!UWAGA]

    Usuwanie SuppliersBindingNavigator nie powoduje usunięcia cały kod, który został wygenerowany dla niego.Można usunąć ten kod.

  5. Przenieść pole kombi, tak aby był on w obszarze etykiety i zmiany rozmiar właściwość, aby 171, 21.

  6. W Źródła danych okna, rozwiń węzeł produkty tabela, to jest elementem podrzędnym dostawców tabeli.

  7. Kliknij strzałkę rozwijania w ProductName , a następnie wybierz węzeł polu listy.

  8. Przeciągnij ProductName do formantu w okienku akcji.

    A ListBox formant nie zostanie utworzony na formant okienka akcji.W tym samym czasie BindingSource o nazwie ProductBindingSource i łączniku tabeli zostaną dodane do projektu w panelu komponentów.

  9. Przenieść pole listy, tak aby był on w obszarze etykiety i zmiany rozmiar właściwość, aby 171,95.

  10. Przeciągnij Button z Przybornik na stronie Actions kontrolować i umieść poniżej pola listy.

  11. Kliknij prawym przyciskiem myszy Button, kliknij przycisk Właściwości w menu skrótów i Zmień następujące właściwości.

    Właściwość

    Wartość

    Nazwa

    Wstaw

    Tekst

    Wstaw

  12. Zmienić rozmiar formantu użytkownika w celu dopasowania formantów.

Konfigurując źródło danych

Aby skonfigurować źródło danych, Dodaj kod, aby Load zdarzenia formantu okienko akcji, aby wypełniał on cały formant z danymi z DataTablei ustawić DataSource i DataMember właściwości poszczególnych formantów.

Aby załadować formantu z danymi

  1. W Load obsługi zdarzeń z ActionsControl klasę, Dodaj następujący kod.

    Private Sub ActionsControl_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles Me.Load
    
        Me.SuppliersTableAdapter.Fill(Me.NorthwindDataSet.Suppliers)
        Me.ProductsTableAdapter.Fill(Me.NorthwindDataSet.Products)
    End Sub
    
    private void ActionsControl_Load(object sender, EventArgs e)
    {
        this.suppliersTableAdapter.Fill(this.northwindDataSet.Suppliers);
        this.productsTableAdapter.Fill(this.northwindDataSet.Products);
    }
    
  2. W języku C#, należy dołączyć obsługi zdarzeń, który ma Load zdarzenia.Można umieścić ten kod w ActionsControl Konstruktor po wywołaniu InitializeComponent.Aby uzyskać więcej informacji na temat tworzenia procedury obsługi zdarzeń, zobacz Porady: tworzenie obsługi zdarzeń w projektach pakietu Office.

    this.Load += new EventHandler(ActionsControl_Load);
    

Aby ustawić właściwości powiązań danych formantów

  1. Wybierz CompanyNameComboBox kontroli.

  2. W Właściwości okno, kliknij przycisk po prawej stronie źródło danych właściwość, a następnie wybierz suppliersBindingSource.

  3. Kliknij przycisk po prawej stronie elementu DisplayMember właściwość, a następnie wybierz Nazwa firmy.

  4. Rozwiń węzeł powiązania danych właściwość, kliknij przycisk po prawej stronie tekstu właściwość, a następnie wybierz Brak.

  5. Wybierz ProductNameListBox kontroli.

  6. W Właściwości okno, kliknij przycisk po prawej stronie źródło danych właściwość, a następnie wybierz productsBindingSource.

  7. Kliknij przycisk po prawej stronie elementu DisplayMember właściwość, a następnie wybierz ProductName.

  8. Rozwiń węzeł powiązania danych właściwość, kliknij przycisk po prawej stronie SelectedValue właściwość, a następnie wybierz Brak.

Dodanie metody wstawiania danych do tabeli

Kolejnym zadaniem jest odczytać danych z formantów związanych i wypełnianie tabeli w dokumencie programu Word.Po pierwsze, należy utworzyć procedurę do formatowania nagłówków w spisie, a następnie dodaj AddData metoda, aby utworzyć i sformatować tabelę programu Word.

Do formatowania nagłówków tabeli

  • W ActionsControl klasę, utworzyć metodę do formatowania nagłówków tabeli.

    Shared Sub SetHeadings(ByVal tblCell As Word.Cell, ByVal text As String)
    
        With tblCell.Range
            .Text = text
            .Font.Bold = True
            .ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter
        End With 
    End Sub
    
    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;
    }
    

Aby utworzyć tabelę

  • W ActionsControl klasę, metodę, który powoduje utworzenie tabeli, jeśli jeszcze nie istnieje i do tabeli można dodać danych w okienku Akcje.

    Private Sub AddData(ByVal row As System.Data.DataRow, ByVal companyName As String)
    
        ' Create a table if it doesn't already exist. 
        If Globals.ThisDocument.Tables.Count = 0 Then 
    
            Try 
                ' Create a table.  
                Dim tbl As Word.Table = Globals.ThisDocument.Tables.Add( _
                    Globals.ThisDocument.Application.Selection.Range, 1, 4)
    
                ' 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 ex As Exception
                MessageBox.Show("Problem creating Products table: " & ex.Message, _
                    "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try 
        End If 
    
        ' Add data from data row to the table. 
        Dim selection As Word.Selection = Globals.ThisDocument.Application.Selection
    
        If selection.Tables.Count > 0 Then 
    
            Dim newRow As Word.Row = Globals.ThisDocument.Tables(1).Rows.Add()
            With newRow
                .Range.Font.Bold = False
                .Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft
                .Cells(4).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight
                .Cells(1).Range.Text = companyName
                .Cells(2).Range.Text = row.Item("ProductName").ToString
                .Cells(3).Range.Text = row.Item("QuantityPerUnit").ToString
                .Cells(4).Range.Text = Math.Round(row.Item("UnitPrice"), 2)
            End With 
    
        Else
            MessageBox.Show("Cursor must be within a table.", _
                "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If 
    End Sub
    
    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);
        }
    }
    

Aby wstawić tekst do tabeli programu Word

  1. Dodaj następujący kod do Click obsługi zdarzeń z Wstaw przycisk.

    Private Sub Insert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Insert.Click
    
        Dim tbl As System.Data.DataTable = NorthwindDataSet.Products
        Dim rows() As System.Data.DataRow
    
        ' Check if a product is selected. 
        If Not Me.ProductNameListBox.SelectedIndex < 0 Then 
    
            Dim product As String = Me.ProductNameListBox.SelectedItem.Row.Item("ProductName")
            Dim company As String = Me.CompanyNameComboBox.Text
    
            ' Return the data row from the selected Product in the list box.
            rows = tbl.Select("[ProductName] = '" & product.Replace("'", "''") & "'")
    
            AddData(rows(0), company)
    
        Else
            MessageBox.Show("Please select a product.", "Actions Pane", MessageBoxButtons.OK)
        End If 
    End Sub
    
    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. W języku C#, należy utworzyć moduł obsługi zdarzenia Click przycisku.Można umieścić ten kod w Load obsługi zdarzeń z ActionsControl klasy.

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

Wyświetlone w okienku Akcje

W okienku Akcje staje się widoczna po dodaniu do niego formantów.

Aby wyświetlić okienko akcji

  1. W Solution Explorer, kliknij prawym przyciskiem myszy projekcie ThisDocument.vb lub ThisDocument.cs, a następnie kliknij przycisk View Code w menu skrótów.

  2. Utwórz nowe wystąpienie formantu w górnej części ThisDocument klasy wyglądającą jak w następującym przykładzie.

    Dim actions As New ActionsControl
    
    private ActionsControl actions = new ActionsControl();
    
  3. Dodaj kod, aby Startup obsługi zdarzeń z ThisDocument wyglądającą jak w następującym przykładzie.

    Me.ActionsPane.Controls.Add(actions)
    
    this.ActionsPane.Controls.Add(actions);
    

Testowanie aplikacji

Teraz można przetestować dokumencie, aby zweryfikować, że po otwarciu dokumentu pojawia się w okienku Akcje.Testować Relacja wzorca/szczegółu formantów znajdujących się na stronie Actions i upewnij się, że dane są wypełniane w wyrazie table, gdy Wstaw przycisku.

Aby przetestować dokument

  1. Naciśnij klawisz F5, aby uruchomić projekt.

  2. Upewnij się, że w okienku akcji jest widoczny.

  3. Wybierz firmę w polu kombi i sprawdź, czy elementy w produkty lista zmieniają się.

  4. Wybierz produkt, kliknij przycisk Wstaw na stronie Actions i sprawdź, czy szczegóły produktu są dodane do tabeli w programie Word.

  5. Wstaw dodatkowe produkty z różnych firm.

Następne kroki

W tym instruktażu przedstawiono podstawy wiązanie danych do formantów w okienku Akcje w programie Word.Poniżej przedstawiono niektóre zadania, które mogą przyjść dalej:

Zobacz też

Zadania

Porady: dodawanie okienek akcji do dokumentów programu Word lub arkuszy programu Excel

Inne zasoby

Okienko akcji ― Omówienie

Wiązanie danych do formantów w rozwiązaniach pakietu Office