Udostępnij za pośrednictwem


Przewodnik: wiązanie danych z kontrolkami w okienku akcji programu Word

W tym przewodniku przedstawiono powiązanie danych z kontrolkami w okienku akcji w programie Word. Kontrolki przedstawiają relację wzorca/szczegółów między tabelami w bazie danych programu SQL Server.

Dotyczy: informacje w tym temacie dotyczą projektów na poziomie dokumentu dla programu Word. Aby uzyskać więcej informacji, zobacz Funkcje dostępne przez aplikacja pakietu Office lication i typ projektu.

W instruktażu przedstawiono następujące zagadnienia:

  • Tworzenie okienka akcji za pomocą kontrolek formularzy systemu Windows powiązanych z danymi.

  • Używanie relacji wzorca/szczegółów do wyświetlania danych w kontrolkach.

  • Pokaż okienko akcji po otwarciu aplikacji.

Uwaga

Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE programu Visual Studio.

Wymagania wstępne

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

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

  • Word 2013 lub Word 2010 .

  • Dostęp do serwera za pomocą przykładowej bazy danych Northwind SQL Server.

  • Uprawnienia do odczytu i zapisu w bazie danych programu SQL Server.

Tworzenie projektu

Pierwszym krokiem jest utworzenie projektu dokumentu programu Word.

Aby utworzyć nowy projekt

  1. Utwórz projekt dokumentu programu Word o nazwie Moje okienko akcji programu Word. W kreatorze wybierz pozycję Utwórz nowy dokument.

    Aby uzyskać więcej informacji, zobacz How to: Create Office projects in Visual Studio (Jak tworzyć projekty pakietu Office w programie Visual Studio).

    Program Visual Studio otwiera nowy dokument programu Word w projektancie i dodaje projekt Moje akcje programu Word do Eksplorator rozwiązań.

Dodawanie kontrolek do okienka akcji

W tym przewodniku potrzebna jest kontrolka okienka akcji zawierająca powiązane z danymi kontrolki Windows Forms. Dodaj źródło danych do projektu, a następnie przeciągnij kontrolki z okna Źródła danych do kontrolki okienka akcji.

Aby dodać kontrolkę okienka akcji

  1. Wybierz projekt Moje akcje programu Word w Eksplorator rozwiązań.

  2. W menu Project (Projekt) kliknij pozycję Add New Item (Dodaj nowy element).

  3. W oknie dialogowym Dodawanie nowego elementu wybierz pozycję Kontrolka okienka akcji, nadaj jej nazwę ActionsControl, a następnie kliknij przycisk Dodaj.

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

  1. Jeśli okno Źródła danych nie jest widoczne, wyświetl je według na pasku menu, wybierając pozycję Wyświetl>inne źródła danych systemu Windows.>

    Uwaga

    Jeśli pozycja Pokaż źródła danych jest niedostępna, kliknij dokument programu Word, a następnie sprawdź ponownie.

  2. Kliknij pozycję Dodaj nowe źródło danych, aby uruchomić Kreatora konfiguracji źródła danych.

  3. Wybierz pozycję Baza danych , a następnie kliknij przycisk Dalej.

  4. Wybierz połączenie danych z przykładową bazą danych programu SQL Server Northwind lub dodaj nowe połączenie przy użyciu przycisku Nowa Połączenie ion.

  5. Kliknij przycisk Dalej.

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

  7. Rozwiń węzeł Tabele w oknie Obiekty bazy danych.

  8. Zaznacz pole wyboru obok tabel Dostawcy i Produkty .

  9. Kliknij przycisk Zakończ.

    Kreator dodaje tabelę Dostawcy i tabelę Products do okna Źródła danych. Dodaje również wpisany zestaw danych do projektu, który jest widoczny w Eksplorator rozwiązań.

Aby dodać kontrolki Windows Forms powiązane z danymi do kontrolki okienka akcji

  1. W oknie Źródła danych rozwiń tabelę Dostawcy.

  2. Kliknij strzałkę listy rozwijanej w węźle Nazwa firmy, a następnie wybierz pozycję ComboBox.

  3. Przeciągnij pozycję CompanyName z okna Źródła danych do kontrolki okienka akcji.

    Kontrolka ComboBox jest tworzona w kontrolce okienka akcji. W tym samym czasie nazwany BindingSourceSuppliersBindingSourceadapter tabeli i element DataSet są dodawane do projektu na pasku składników.

  4. Wybierz SuppliersBindingNavigator pozycję Na pasku składników i naciśnij przycisk Usuń. W tym przewodniku SuppliersBindingNavigator nie będzie używany element .

    Uwaga

    Usunięcie SuppliersBindingNavigator elementu nie powoduje usunięcia całego kodu, który został dla niego wygenerowany. Możesz usunąć ten kod.

  5. Przenieś pole kombi, aby było pod etykietą i zmień właściwość Size na 171, 21.

  6. W oknie Źródła danych rozwiń tabelę Products ,która jest elementem podrzędnym tabeli Dostawcy.

  7. Kliknij strzałkę listy rozwijanej w węźle ProductName i wybierz pozycję ListBox.

  8. Przeciągnij element ProductName do kontrolki okienka akcji.

    Kontrolka ListBox jest tworzona w kontrolce okienka akcji. BindingSource Jednocześnie do projektu w zasobniku składników są dodawane karty nazwane ProductBindingSource i adapter tabeli.

  9. Przenieś pole listy, aby było pod etykietą i zmień właściwość Size na 171 95.

  10. Przeciągnij kontrolkę Button z Przybornika do kontrolki okienka akcji i umieść ją poniżej pola listy.

  11. Kliknij prawym przyciskiem Buttonmyszy pozycję , kliknij polecenie Właściwości w menu skrótów i zmień następujące właściwości.

    Właściwości Wartość
    Nazwa/nazwisko Insert
    Tekst Insert
  12. Zmień rozmiar kontrolki użytkownika, aby dopasować kontrolki.

Konfigurowanie źródła danych

Aby skonfigurować źródło danych, dodaj kod do Load zdarzenia kontrolki okienka akcji, aby wypełnić kontrolkę danymi z DataTablekontrolki , i ustawić DataSource właściwości i DataMember dla każdej kontrolki.

Aby załadować kontrolkę przy użyciu danych

  1. W procedurze LoadActionsControl obsługi zdarzeń klasy dodaj następujący kod.

    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ć program obsługi zdarzeń do Load zdarzenia. Ten kod można umieścić w konstruktorze ActionsControl po wywołaniu metody InitializeComponent. Aby uzyskać więcej informacji na temat tworzenia procedur obsługi zdarzeń, zobacz How to: Create event handlers in Office projects (Instrukcje: tworzenie programów obsługi zdarzeń w projektach pakietu Office).

    this.Load += new EventHandler(ActionsControl_Load);
    

Aby ustawić właściwości powiązania danych kontrolek

  1. Wybierz kontrolkę CompanyNameComboBox .

  2. W oknie Właściwości kliknij przycisk po prawej stronie właściwości DataSource, a następnie wybierz pozycję suppliersBindingSource.

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

  4. Rozwiń właściwość DataBindings, kliknij przycisk po prawej stronie właściwości Text i wybierz pozycję Brak.

  5. Wybierz kontrolkę ProductNameListBox .

  6. W oknie Właściwości kliknij przycisk po prawej stronie właściwości DataSource i wybierz pozycję productsBindingSource.

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

  8. Rozwiń właściwość DataBindings, kliknij przycisk po prawej stronie właściwości SelectedValue i wybierz pozycję Brak.

Dodawanie metody w celu wstawiania danych do tabeli

Następnym zadaniem jest odczytanie danych z powiązanych kontrolek i wypełnienie tabeli w dokumencie programu Word. Najpierw utwórz procedurę formatowania nagłówków w tabeli, a następnie dodaj AddData metodę w celu utworzenia i sformatowania tabeli programu Word.

Aby sformatować nagłówki tabeli

  1. ActionsControl W klasie utwórz metodę formatowania nagłówków tabeli.

    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ę

  1. ActionsControl W klasie napisz metodę, która utworzy tabelę, jeśli jeszcze nie istnieje, i dodaj dane z okienka akcji do tabeli.

    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 procedury obsługi zdarzeń przycisku Wstaw .

    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ć procedurę obsługi zdarzeń dla Click zdarzenia przycisku. Ten kod można umieścić w procedurze Load obsługi ActionsControl zdarzeń klasy .

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

Pokaż okienko akcji

Okienko akcji staje się widoczne po dodaniu do niego kontrolek.

Aby wyświetlić okienko akcji

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy plik ThisDocument.vb lub ThisDocument.cs, a następnie kliknij polecenie Wyświetl kod w menu skrótów.

  2. Utwórz nowe wystąpienie kontrolki w górnej części ThisDocument klasy, tak aby wyglądało to jak w poniższym przykładzie.

    private ActionsControl actions = new ActionsControl();
    
  3. Dodaj kod do Startup procedury obsługi zdarzeń, ThisDocument aby wyglądał jak w poniższym przykładzie.

    this.ActionsPane.Controls.Add(actions);
    

Testowanie aplikacji

Teraz możesz przetestować dokument, aby sprawdzić, czy po otwarciu dokumentu zostanie wyświetlone okienko akcji. Przetestuj relację wzorca/szczegółów w kontrolkach w okienku akcji i upewnij się, że dane są wypełniane w tabeli programu Word po kliknięciu przycisku Wstaw .

Aby przetestować dokument

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

  2. Upewnij się, że okienko akcji jest widoczne.

  3. Wybierz firmę w polu kombi i sprawdź, czy elementy w polu listy Produkty uległy zmianie.

  4. Wybierz produkt, kliknij pozycję Wstaw w okienku akcji i sprawdź, czy szczegóły produktu zostały dodane do tabeli w programie Word.

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

Następne kroki

W tym przewodniku przedstawiono podstawy powiązania danych do kontrolek w okienku akcji w programie Word. Poniżej przedstawiono niektóre zadania, które mogą pojawić się w następnej kolejności: