Demonstra Passo a passo: Vincular dados a controles em um painel de ações do Word
Este passo a passo demonstra a vinculação de dados a controles em um painel de ações no Word. Os controles demonstram uma relação mestre/detalhe entre tabelas em um banco de dados do SQL Server.
Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento para o Word. Para obter mais informações, consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.
Este passo a passo ilustra as seguintes tarefas:
Criando um painel de ações com controles do Windows Forms vinculados a dados.
Usando uma relação mestre/detalhe para exibir dados nos controles.
Mostrar o painel de ações quando o aplicativo for aberto.
Observação
Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, confira Personalizar o IDE do Visual Studio.
Pré-requisitos
Você precisará dos seguintes componentes para concluir este passo a passo:
Uma edição do Visual Studio que inclui o Microsoft Office Developer Tools. Para obter mais informações, consulte Configurar um computador para desenvolver soluções do Office.
Word 2013 ou Word 2010 .
Acesso a um servidor com o banco de dados de exemplo Northwind SQL Server.
Permissões para ler e gravar no banco de dados do SQL Server.
Criar o projeto
A primeira etapa é criar um projeto de Documento do Word.
Criar um novo projeto
Crie um projeto de documento do Word com o nome Painel de Ações do Word. No assistente, selecione Criar um novo documento.
Para obter mais informações, consulte Como: Criar projetos do Office no Visual Studio.
O Visual Studio abre o novo documento do Word no designer e adiciona o projeto My Word Actions Pane ao Gerenciador de Soluções.
Adicionar controles ao painel de ações
Para esta explicação passo a passo, você precisa de um controle de painel de ações que contém controles do Windows Forms vinculados a dados. Adicione uma fonte de dados ao projeto e arraste controles da janela Fontes de Dados para o controle do painel de ações.
Para adicionar um controle de painel de ações
Selecione o projeto Painel de Ações do Meu Word no Gerenciador de Soluções.
No menu Projeto , clique em Adicionar Novo Item.
Na caixa de diálogo Adicionar Novo Item, selecione Controle do Painel de Ações, nomeie-o como ActionsControl e clique em Adicionar.
Para adicionar uma fonte de dados ao projeto
Se a janela Fontes de Dados não estiver visível, exiba-a por, na barra de menus, escolher Exibir>Outras Fontes de Dados do Windows.>
Observação
Se Mostrar Fontes de Dados não estiver disponível, clique no documento do Word e verifique novamente.
Clique em Adicionar Nova Fonte de Dados para iniciar o Assistente de Configuração de Fonte de Dados.
Selecione Banco de Dados e clique em Avançar.
Selecione uma conexão de dados com o banco de dados SQL Server de exemplo Northwind ou adicione uma nova conexão usando o botão Nova Conexão .
Clique em Avançar.
Desmarque a opção para salvar a conexão se ela estiver selecionada e clique em Avançar.
Expanda o nó Tabelas na janela Objetos de banco de dados.
Marque a caixa de seleção ao lado das tabelas Fornecedores e Produtos.
Clique em Concluir.
O assistente adiciona a tabela Fornecedores e a tabela Produtos à janela Fontes de Dados. Ele também adiciona um conjunto de dados tipado ao seu projeto que é visível no Gerenciador de Soluções.
Para adicionar controles do Windows Forms vinculados a dados a um controle do painel de ações
Na janela Fontes de Dados, expanda a tabela Fornecedores.
Clique na seta suspensa no nó Nome da Empresa e selecione ComboBox.
Arraste CompanyName da janela Fontes de Dados para o controle do painel de ações.
Um ComboBox controle é criado no controle do painel de ações. Ao mesmo tempo, um nomeado
SuppliersBindingSource
, um adaptador de tabela e um BindingSource DataSet são adicionados ao projeto na bandeja do componente.Selecione
SuppliersBindingNavigator
na bandeja Componente e pressione Delete. Você não usará o neste passo aSuppliersBindingNavigator
passo.Observação
A exclusão do
SuppliersBindingNavigator
não remove todo o código que foi gerado para ele. Você pode remover esse código.Mova a caixa de combinação para que ela fique sob o rótulo e altere a propriedade Size para 171, 21.
Na janela Fontes de Dados, expanda a tabela Produtos que é filha da tabela Fornecedores.
Clique na seta suspensa no nó ProductName e selecione ListBox.
Arraste ProductName para o controle do painel de ações.
Um ListBox controle é criado no controle do painel de ações. Ao mesmo tempo, um adaptador nomeado
ProductBindingSource
e um BindingSource adaptador de tabela são adicionados ao projeto na bandeja do componente.Mova a caixa de listagem para que ela fique sob o rótulo e altere a propriedade Size para 171,95.
Arraste um Button da Caixa de Ferramentas para o controle do painel de ações e coloque-o abaixo da caixa de listagem.
Clique com o botão direito do mouse no , clique em Propriedades no Buttonmenu de atalho e altere as seguintes propriedades.
Propriedade Valor Nome Inserção Texto Inserção Redimensione o controle de usuário para ajustar os controles.
Configurar a fonte de dados
Para configurar a fonte de dados, adicione código ao Load evento do controle do painel de ações para preencher o controle com dados do DataTable, e defina as DataSource propriedades e DataMember para cada controle.
Para carregar o controle com dados
Load No manipulador de eventos da
ActionsControl
classe, adicione o código a seguir.No C#, você deve anexar o manipulador de eventos ao Load evento. Você pode colocar esse código no
ActionsControl
construtor, após a chamada paraInitializeComponent
. Para obter mais informações sobre como criar manipuladores de eventos, consulte Como: Criar manipuladores de eventos em projetos do Office.this.Load += new EventHandler(ActionsControl_Load);
Para definir propriedades de vinculação de dados dos controles
Selecione o controle
CompanyNameComboBox
.Na janela Propriedades, clique no botão à direita da propriedade DataSource e selecione suppliersBindingSource.
Clique no botão à direita da propriedade DisplayMember e selecione CompanyName.
Expanda a propriedade DataBindings , clique no botão à direita da propriedade Text e selecione Nenhum.
Selecione o controle
ProductNameListBox
.Na janela Propriedades, clique no botão à direita da propriedade DataSource e selecione productsBindingSource.
Clique no botão à direita da propriedade DisplayMember e selecione ProductName.
Expanda a propriedade DataBindings , clique no botão à direita da propriedade SelectedValue e selecione Nenhum.
Adicionar um método para inserir dados em uma tabela
A próxima tarefa é ler os dados dos controles acoplados e preencher uma tabela no documento do Word. Primeiro, crie um procedimento para formatar os títulos na tabela e, em seguida, adicione o AddData
método para criar e formatar uma tabela do Word.
Para formatar os títulos da tabela
ActionsControl
Na classe, crie um método para formatar os títulos da tabela.
Para criar a tabela
ActionsControl
Na classe, escreva um método que criará uma tabela se ainda não existir e adicione dados do painel de ações à tabela.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); } }
Para inserir texto em uma tabela do Word
Adicione o seguinte código ao Click manipulador de eventos do botão Inserir .
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); } }
No C#, você deve criar um manipulador de eventos para o Click evento do botão. Você pode colocar esse código no Load manipulador de eventos da
ActionsControl
classe.this.Insert.Click += new EventHandler(Insert_Click);
Mostrar o painel de ações
O painel de ações torna-se visível depois que os controles são adicionados a ele.
Para mostrar o painel de ações
No Gerenciador de Soluções, clique com o botão direito do mouse em ThisDocument.vb ou ThisDocument.cs e clique em Exibir Código no menu de atalho.
Crie uma nova instância do controle na parte superior da
ThisDocument
classe para que se pareça com o exemplo a seguir.Adicione código ao Startup manipulador de eventos de
ThisDocument
para que ele se pareça com o exemplo a seguir.
Testar o aplicativo
Agora você pode testar o documento para verificar se o painel de ações aparece quando o documento é aberto. Teste a relação mestre/detalhe nos controles no painel de ações e verifique se os dados estão preenchidos em uma tabela do Word quando o botão Inserir é clicado.
Para testar o documento
Pressione F5 para executar o projeto.
Confirme se o painel de ações está visível.
Selecione uma empresa na caixa de combinação e verifique se os itens na caixa de listagem Produtos são alterados.
Selecione um produto, clique em Inserir no painel de ações e verifique se os detalhes do produto foram adicionados à tabela no Word.
Insira produtos adicionais de várias empresas.
Próximas etapas
Este passo a passo mostra as noções básicas de vinculação de dados a controles em um painel de ações no Word. Estas são algumas tarefas que podem vir a seguir:
Vinculação de dados a controles no Excel. Para obter mais informações, consulte Demonstra Passo a passo: vincular dados a controles em um painel de ações do Excel.
Implantando o projeto. Para obter mais informações, consulte Implantar uma solução do Office usando o ClickOnce.