Instruktaż: Wiązanie danych do formantów w okienku Akcje 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.
Dotyczy: Informacje przedstawione w tym temacie dotyczą projektów na poziomie dokumentu dla programu Word 2013 i Word 2010. Aby uzyskać więcej informacji, zobacz Funkcje dostępne w aplikacji 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 Visual Studio, ustawienia.
Wymagania wstępne
Następujące składniki są wymagane do przeprowadzenia tego instruktażu:
-
Wersja Visual Studio 2012 zawierająca narzędzia dla deweloperów pakietu Microsoft Office. Aby uzyskać więcej informacji, zobacz [Konfigurowanie komputera do opracowywania rozwiązań pakietu Office](bb398242\(v=vs.110\).md).
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 Jak: tworzenie projektów pakietu Office w programie 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
Wybierz Moje okienku Akcje Word projektu w Solution Explorer.
Na Projekt menu, kliknij przycisk Add New Item.
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
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.
Kliknij przycisk Dodać nowe źródło danych zacząć Kreatora konfiguracji źródła danych.
Wybierz bazy danych a następnie kliknij przycisk Dalej.
Wybierz połączenie danych do programu SQL Server bazie danych Northwind, lub dodać nowe połączenie za pomocą Nowego połączenia przycisk.
Kliknij Dalej.
Wyczyść opcję, aby zapisać połączenie, jeśli jest zaznaczone, a następnie kliknij przycisk Dalej.
Rozwiń węzeł tabele węzeł w obiektów bazy danych okna.
Zaznacz pole wyboru obok opcji dostawców i produkty tabele.
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
W Źródła danych okna, rozwiń węzeł dostawców tabeli.
Kliknij strzałkę rozwijania w Nazwy firmy , a następnie wybierz węzeł ComboBox.
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.
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.
Przenieść pole kombi, tak aby był on w obszarze etykiety i zmiany rozmiar właściwość, aby 171, 21.
W Źródła danych okna, rozwiń węzeł produkty tabela, to jest elementem podrzędnym dostawców tabeli.
Kliknij strzałkę rozwijania w ProductName , a następnie wybierz węzeł polu listy.
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.
Przenieść pole listy, tak aby był on w obszarze etykiety i zmiany rozmiar właściwość, aby 171,95.
Przeciągnij Button z Przybornik na stronie Actions kontrolować i umieść poniżej pola listy.
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
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
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); }
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 Jak: tworzenie programów obsługi zdarzeń w projektach pakietu Office.
this.Load += new EventHandler(ActionsControl_Load);
Aby ustawić właściwości powiązań danych formantów
Wybierz CompanyNameComboBox kontroli.
W Właściwości okno, kliknij przycisk po prawej stronie źródło danych właściwość, a następnie wybierz suppliersBindingSource.
Kliknij przycisk po prawej stronie elementu DisplayMember właściwość, a następnie wybierz Nazwa firmy.
Rozwiń węzeł powiązania danych właściwość, kliknij przycisk po prawej stronie tekstu właściwość, a następnie wybierz Brak.
Wybierz ProductNameListBox kontroli.
W Właściwości okno, kliknij przycisk po prawej stronie źródło danych właściwość, a następnie wybierz productsBindingSource.
Kliknij przycisk po prawej stronie elementu DisplayMember właściwość, a następnie wybierz ProductName.
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
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); } }
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
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.
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();
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
Naciśnij klawisz F5, aby uruchomić projekt.
Upewnij się, że w okienku akcji jest widoczny.
Wybierz firmę w polu kombi i sprawdź, czy elementy w produkty lista zmieniają się.
Wybierz produkt, kliknij przycisk Wstaw na stronie Actions i sprawdź, czy szczegóły produktu są dodane do tabeli w programie Word.
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:
Wiązanie danych do formantów w programie Excel.Aby uzyskać więcej informacji, zobacz Instruktaż: Wiązanie danych do formantów w okienku Akcje programu Excel.
Wdrażanie projektu.Aby uzyskać więcej informacji, zobacz Wdrażanie rozwiązania do pakietu Office przy użyciu technologii ClickOnce.
Zobacz też
Zadania
Jak: Dodaj w okienku Akcje dokumentów programu Word lub Excel skoroszytów
Inne zasoby
Wiązanie danych do formantów w rozwiązania dla pakietu Office