Názorný postup: Vazba dat na ovládací prvky v podokně Akce aplikace Word
Tento návod ukazuje datové vazby pro ovládací prvky na ukotvené podokno akcí v aplikaci Word.Ovládací prvky prokázat vztah seznam–podrobnosti mezi tabulkami v databázi serveru SQL Server.
Platí pro: Informace v tomto tématu se vztahují na projekty na úrovni dokumentu v aplikacích Word 2013 a Word 2010. Další informace naleznete v tématu Funkce aplikace Office a typ projektu.
Tento návod ilustruje následující úkoly:
Vytváření ukotvené podokno akcí s ovládacími prvky model Windows Forms, které jsou vázány na data.
Pomocí vztahu seznam podrobnosti k zobrazení dat v ovládacích prvcích.
Zobrazte podokno akcí při otevření aplikace.
[!POZNÁMKA]
Váš počítač může zobrazit jiné názvy nebo umístění pro některé prvky uživatelského rozhraní sady Visual Studio v následujících pokynech.Tyto prvky jsou určeny verzí aplikace Visual Studio a použitým nastavením.Další informace naleznete v tématu Nastavení aplikace Visual Studio.
Požadavky
Chcete-li dokončit tento návod, potřebujete následující komponenty:
-
Edice sady Visual Studio 2012, která zahrnuje nástroje Microsoft Office Developer Tools. Další informace naleznete v tématu [Konfigurace počítače vyvinout řešení Office](bb398242\(v=vs.110\).md).
Word 2013 nebo Word 2010.
Přístup k serveru s ukázkovou databází serveru SQL Northwind.
Oprávnění číst a zapisovat do databáze serveru SQL Server.
Vytváření projektu
První krok je vytvořit projekt dokumentu aplikace Word.
Chcete-li vytvořit nový projekt
Vytvořte projekt dokumentu aplikace Word s názvem Moje podokno akcí aplikace Word.V okně průvodce vyberte vytvořit nový dokument.
Další informace naleznete v tématu Jak: vytvoření Office projekty v aplikaci Visual Studio.
Visual Studio otevře nový dokument aplikace Word v návrháři a přidá Můj podokno akcí aplikace Word projektu na Průzkumníku.
Přidání ovládacích prvků do podokna akcí
Pro tento návod potřebujete ovládací prvek podokna akce, který obsahuje ovládací prvky model Windows Forms s vazbou na data.Do projektu přidat zdroj dat a potom přetáhněte ovládací prvky z Zdroje dat okno Ovládací prvek podokna akcí.
Chcete-li přidat ovládací prvek podokna akcí
Vyberte Můj podokno akcí aplikace Word projektu v Průzkumníku.
V nabídce Projekt klikněte na příkaz Přidat novou položku.
V Přidat novou položku dialogové okno, vyberte Ovládací prvek podokna akcí, pojmenujte jej ActionsControla potom klepněte na tlačítko Přidat.
Chcete-li přidat zdroj dat do projektu
Pokud Zdroje dat okno není zobrazen, zobrazit, na nabídek, výběr zobrazení, Ostatní okna, Zdroje dat.
[!POZNÁMKA]
Pokud Zobrazit zdroje dat není k dispozici, klepněte na dokument aplikace Word a znovu zkontrolovat.
Klepněte na tlačítko Přidat nový zdroj dat ke spuštění Průvodce konfigurací zdroje dat.
Vyberte databáze a potom klepněte na tlačítko Další.
Vyberte datové připojení k ukázkové databázi SQL Server Northwind nebo přidat nové připojení pomocí Nové připojení tlačítko.
Klepněte na tlačítko Další.
Zrušte možnost uložení připojení, pokud je zaškrtnuto a potom klepněte na tlačítko Další.
Rozbalte tabulky uzlu databázových objektů okna.
Zaškrtněte políčko vedle Dodavatelé a produkty tabulky.
Klepněte na tlačítko Dokončit.
Průvodce přidá Dodavatelé tabulky a produkty tabulky Zdroje dat okna.Také přidá definované datové sady do projektu, který je viditelný v Průzkumníku.
Chcete-li přidat ovládací prvky model Windows Forms s vazbou na data na ovládací prvek podokna akcí
V Zdroje dat okno, rozbalte Dodavatelé tabulky.
Klepněte na šipku rozevíracího seznamu Firma uzlu a vyberte pole se seznamem.
Přetáhněte firma z Zdroje dat okno Ovládací prvek podokna akcí.
A ComboBox ovládací prvek je vytvořen na ovládací prvek podokna akcí.Ve stejnou dobu BindingSource s názvem SuppliersBindingSource, s adaptérem tabulce a DataSet jsou přidány do projektu v okně komponent.
Vyberte SuppliersBindingNavigator v součást zásobník a stiskněte klávesu DELETE.Nebudete používat SuppliersBindingNavigator v tomto návodu.
[!POZNÁMKA]
Odstranění SuppliersBindingNavigator neodstraní všechny kód, který byl pro něj vytvořen.Chcete-li odstranit tento kód.
Přesunout pole se seznamem tak, aby byla podle popisku a změnit velikost vlastnost 171, 21.
V Zdroje dat okno, rozbalte produkty tabulka, která je podřízena Dodavatelé tabulky.
Klepněte na šipku rozevíracího seznamu ProductName uzlu a vyberte ListBox.
Přetáhněte ProductName na ovládací prvek podokna akcí.
A ListBox ovládací prvek je vytvořen na ovládací prvek podokna akcí.Ve stejnou dobu BindingSource s názvem ProductBindingSource a adaptér tabulky jsou přidány do projektu v okně komponent.
Přemístit seznam tak, aby byla podle popisku a změnit velikost vlastnost 171,95.
Přetáhněte Button z nástrojů do podokna akce ovládacího prvku a umístěte jej pod poli se seznamem.
Klepněte pravým tlačítkem myši Button, klepněte na tlačítko Vlastnosti v místní nabídce a změnit následující vlastnosti.
Property
Value
Název
Insert
Text
Insert
Změna velikosti uživatelského ovládacího prvku tak, aby odpovídala ovládací prvky.
Nastavení zdroje dat
Chcete-li nastavit zdroj dat, přidejte kód, který Load událostí ovládací prvek podokna akcí k naplnění ovládacího prvku s daty z DataTablea nastavte DataSource a DataMember vlastnosti pro každý ovládací prvek.
Chcete-li načíst ovládací prvek s daty
V Load obslužné rutiny ActionsControl třída, přidejte následující kód.
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); }
V jazyce C#, je nutné připojit obslužnou rutinu události Load události.Můžete umístit tento kód ActionsControl konstruktor po volání InitializeComponent.Další informace o vytváření obslužných rutin událostí naleznete v tématu Jak: vytvoření obslužné rutiny událostí v projektech Office.
this.Load += new EventHandler(ActionsControl_Load);
Chcete-li nastavit vlastnosti vazby dat ovládacích prvků
Vyberte ovládací prvek CompanyNameComboBox.
V Vlastnosti okno, klepněte na tlačítko napravo od zdroje dat vlastnosti a vyberte suppliersBindingSource.
Klepněte na tlačítko napravo od DisplayMember vlastnosti a vyberte firma.
Rozbalte datové vazby vlastnost, klepněte na tlačítko napravo od textu vlastnosti a vyberte žádný.
Vyberte ovládací prvek ProductNameListBox.
V Vlastnosti okno, klepněte na tlačítko napravo od zdroje dat vlastnosti a vyberte productsBindingSource.
Klepněte na tlačítko napravo od DisplayMember vlastnosti a vyberte ProductName.
Rozbalte datové vazby vlastnost, klepněte na tlačítko napravo od vlastnost SelectedValue vlastnosti a vyberte žádný.
Přidání metody pro vkládání dat do tabulky
Dalším úkolem je číst data vázané ovládací prvky a vyplnění tabulky v dokumentu aplikace Word.Nejprve vytvořte proceduru pro formátování nadpisů v tabulce a pak přidejte AddData metodu k vytvoření a formátování tabulky aplikace Word.
Chcete-li formátovat záhlaví tabulky
V ActionsControl třídy, vytvořte metodu, chcete-li formátovat záhlaví tabulky.
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; }
Chcete-li vytvořit tabulku
V ActionsControl třídy, metody, která vytvoří tabulku, je-li jeden ještě existují a přidat data v podokně Akce do tabulky zapsat.
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); } }
Chcete-li text vložit do tabulky aplikace Word
Přidejte následující kód, který Click obslužné rutiny Vložení tlačítko.
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); } }
V jazyce C#, je nutné vytvořit obslužnou rutinu události Click události tlačítka.Můžete umístit tento kód Load obslužné rutiny ActionsControl třídy.
this.Insert.Click += new EventHandler(Insert_Click);
Zobrazení podokna akcí
V podokně akcí se zobrazí po přidání ovládacích prvků do ní.
Chcete-li zobrazit podokno akcí
V Průzkumníku, klepněte pravým tlačítkem ThisDocument.vb nebo ThisDocument.csa potom klepněte na tlačítko Zobrazit kód v místní nabídce.
Vytvořte novou instanci ovládacího prvku v horní části ThisDocument třídy tak, že vypadá jako v následujícím příkladu.
Dim actions As New ActionsControl
private ActionsControl actions = new ActionsControl();
Přidejte kód, který Startup obslužné rutiny události z ThisDocument tak, že vypadá jako v následujícím příkladu.
Me.ActionsPane.Controls.Add(actions)
this.ActionsPane.Controls.Add(actions);
Testování aplikace
Nyní můžete otestovat ověřte, že při otevření dokumentu se zobrazí v podokně Akce dokumentu.Otestovat vztah seznam/podrobnosti v ovládacích prvcích v podokně akcí a ujistěte se, že dat je naplněna ve slově tabulky, kdy Vložení klepnutí na tlačítko.
Chcete-li otestovat dokumentu
Stisknutím klávesy F5 spustíte váš projekt.
Potvrďte, že je zobrazen v podokně akcí.
Vyberte společnost, v poli se seznamem a ověřte, zda položky v produkty seznam pole změnit.
Vyberte produkt, klepněte na tlačítko Vložení v podokně akcí a ověřte, zda jsou podrobnosti o produktu přidány do tabulky v aplikaci Word.
Vložte další produkty od různých společností.
Další kroky
Tento návod ukazuje základní informace o navázání dat na ovládací prvky na ukotvené podokno akcí v aplikaci Word.Zde jsou některé úkoly, které by mohly přijít Další:
Navázání dat na ovládací prvky v aplikaci Excel.Další informace naleznete v tématu Názorný postup: Vazba dat pro ovládací prvky v podokně akcí aplikace Excel.
Nasazení projektu.Další informace naleznete v tématu Nasazení řešení Office s použitím technologie ClickOnce.
Viz také
Úkoly
Jak: dokumenty aplikace Word nebo sešity aplikace Excel přidat podokno akcí