Compartilhar via


A ligação de dados a controles em soluções do Office

Você pode associar controles de formulários do windows e controles host no Microsoft Office Word documentam ou planilhas Microsoft Office Excel a uma fonte de dados para os controles que exibem os dados automaticamente.Você pode associar dados a controles em projetos de aplicativo e da nível.

Aplicáve a: As informações neste tópico se aplicam a projetos em nível de aplicativo e em nível de documento para o Office 2013 e o Office 2010. Consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Os controles de host estendem os objetos que estão nos modelos de objeto da palavra e Excel, como controles de conteúdo nas palavras e em intervalos nomeados Excel.Para obter mais informações, consulte Itens de host e visão geral sobre controles de Host.

Ambos os formulários do windows e controles host usam o modelo de associação de dados dos formulários do windows, que suportam associação de dados simples e os dados complexos que se associam a fontes de dados como o conjunto de dados e tabelas de dados.Para obter informações completas sobre o modelo de associação de dados em formulários do windows, consulte Ligação de dados e o Windows Forms.

link para vídeo Para uma demonstração de vídeo relacionada, consulte Como: eu faço Consumir dados do banco de dados do excel?.

Associação de dados simples

A associação de dados simples existir quando uma propriedade do controle é associada à um elemento de dados, como um valor em uma tabela de dados.Por exemplo, o controle de NamedRange tem uma propriedade de Value2 que pode ser associada a um campo em um dataset.Quando o campo no conjunto de dados, o valor no intervalo nomeado também muda.Todos hospedarem controles, exceto para o controle de XMLNodes , associação de dados simples de suporte.O controle de XMLNodes é uma coleção, e portanto não suporta associação de dados.

Para executar os dados simples que são associados a um host controle, adicione Binding à propriedade de DataBindings do controle.Um objeto de Binding representa a associação simples entre um valor de propriedade do controle e o valor de um elemento de dados.

O exemplo a seguir demonstra como associar a propriedade de Value2 a um elemento de dados em um projeto de um documento nível.

Dim binding1 As New Binding("Value2", ds, "Customers.Names", True)
namedRange1.DataBindings.Add(binding1)
Binding binding1 = new Binding("Value2", ds, "Customers.Names", true);
namedRange1.DataBindings.Add(binding1);

Para passo a passo que demonstra a associação de dados simples, consulte Passo a passo: Ligação de dados simples em um projeto de nível de documento para um projeto de um documento nível e Passo a passo: Ligação de dados simples em um projeto de nível de aplicativo para um projeto de aplicativo.

Associação de dados complexas

Associação de dados complexos existir quando uma propriedade do controle é associada a mais de um elemento de dados, como várias colunas em uma tabela de dados.O controle de ListObject para o excel é o único controle host que suportam associação de dados complexos.Também há muitos controles de formulários do windows que suportam associação de dados complexos, como o controle de DataGridView .

Para executar associação de dados complexos, defina a propriedade de DataSource do controle a um objeto da fonte de dados que é suportado pela associação de dados complexos.Por exemplo, a propriedade de DataSource de controle de ListObject pode ser associada às várias colunas em uma tabela de dados.Todos os dados na tabela de dados aparecem no controle de ListObject , e como os dados da tabela de dados mudarem, ListObject também muda.Para obter uma lista de fontes de dados que você pode usar para associação de dados complexos, consulte Fontes de dados suportados pelo Windows Forms.

O exemplo de código a seguir cria DataSet com os dois objetos de DataTable e preenche uma das tabelas com dados.O código associa o ListObject a tabela que contém dados.Este exemplo é para um projeto da nível do excel.

    Private Sub ListObject_DataSourceAndMember()
        ' Create a DataSet and two DataTables.
        Dim ordersDataSet As New DataSet("ordersDataSet")
        Dim tableCustomers As New DataTable("Customers")
        Dim tableProducts As New DataTable("Products")
        ordersDataSet.Tables.Add(tableCustomers)
        ordersDataSet.Tables.Add(tableProducts)

        ' Add a data to the Customers DataTable.
        tableCustomers.Columns.Add(New DataColumn("LastName"))
        tableCustomers.Columns.Add(New DataColumn("FirstName"))
        Dim dr As DataRow = tableCustomers.NewRow()
        dr("LastName") = "Chan"
        dr("FirstName") = "Gareth"
        tableCustomers.Rows.Add(dr)

        ' Create a list object.
        Dim List1 As Microsoft.Office.Tools.Excel.ListObject = _
            Me.Controls.AddListObject(Me.Range( _
            "A1"), "Customers")

        ' Bind the list object to the Customers table.
        List1.AutoSetDataBoundColumnHeaders = True
        List1.DataSource = ordersDataSet
        List1.DataMember = "Customers"

    End Sub

private void ListObject_DataSourceAndMember()
{
    // Create a DataSet and two DataTables.
    DataSet ordersDataSet = new DataSet("ordersDataSet");
    DataTable tableCustomers = new DataTable("Customers");
    DataTable tableProducts = new DataTable("Products");
    ordersDataSet.Tables.Add(tableCustomers);
    ordersDataSet.Tables.Add(tableProducts);

    // Add a data to the Customers DataTable.
    tableCustomers.Columns.Add(new DataColumn("LastName"));
    tableCustomers.Columns.Add(new DataColumn("FirstName"));
    DataRow dr = tableCustomers.NewRow();
    dr["LastName"] = "Chan";
    dr["FirstName"] = "Gareth";
    tableCustomers.Rows.Add(dr);

    // Create a list object.
    Microsoft.Office.Tools.Excel.ListObject list1 = 
        this.Controls.AddListObject(
        this.Range["A1"], "Customers");

    // Bind the list object to the Customers table.
    list1.AutoSetDataBoundColumnHeaders = true;
    list1.DataSource = ordersDataSet;
    list1.DataMember = "Customers";
}

Para orientações que demonstram associação de dados complexos, consulte Passo a passo: Ligação de dados complexa em um projeto de nível de documento para um projeto de um documento nível e Passo a passo: Ligação de dados complexa em um projeto de nível de aplicativo para um projeto de aplicativo.

Exibindo dados em documentos e pastas de trabalho

Em projetos de um documento nível, você pode usar a janela de Fontes de Dados para adicionar facilmente controles associados a dados para documentos ou suas pastas de trabalho, da mesma forma que a usa para formulários do windows.Para obter mais informações sobre como usar a janela de Fontes de Dados , consulte Vinculando controles do Windows Forms a dados em Visual Studio e Janela fontes de dados.

ad7sfx3w.collapse_all(pt-br,VS.110).gifArrastando controles da janela data sources

Um controle é criado no documento quando você arrasta um objeto em ela da janela de Fontes de Dados .O tipo de controle que é criado depende se você está associando uma única coluna de colunas de dados ou de vários de dados.

Para o excel, um controle de NamedRange é criado na planilha para cada campo individual, e um controle de ListObject é criado para cada intervalo de dados que inclui várias linhas e colunas.Você pode alterar esta opção selecionar a tabela ou o campo da janela de Fontes de Dados e então escolha um outro controle de lista suspensa.

um controle de ContentControl é adicionado aos documentos.O tipo de controle de conteúdo depende do tipo de dados do campo que você selecionou.

ad7sfx3w.collapse_all(pt-br,VS.110).gifAssociação de dados em um documento Nível de projeto em tempo de design

Os tópicos a seguir mostram exemplos de associação de dados em tempo de design:

ad7sfx3w.collapse_all(pt-br,VS.110).gifAssociando dados em projetos de Nível de aplicativo

Em projetos de aplicativo, você pode adicionar controles somente em tempo de execução.Os tópicos a seguir mostram exemplos de associação de dados em tempo de execução:

Atualizar os dados associados ao host controla

Associação de dados entre uma fonte de dados e um controle do host envolve uma atualização de dados bidirecional.Em associação de dados simples, as alterações na fonte de dados são refletidas no controle automaticamente host, mas as alterações no controle hospedeiro requerem uma chamada explícita atualizar a fonte de dados.O motivo é que em alguns casos, alterações em um campo associado a dados não é aceita a menos que eles são controlados as alterações em outro campo associado a dados.Por exemplo, você pode ter dois campos, um para a duração e um por anos de experiência.a experiência não pode exceder a idade.Um usuário não pode atualizar a idade de 50 a 25 e então a experiência de 30 a 10 a menos que faz ou as alterações ao mesmo tempo.Para resolver esse problema, os campos com associação de dados simples não é atualizado até que as atualizações são enviadas explicitamente pelo código.

Para atualizar uma fonte de dados dos controles host que permitem a associação de dados simples, você deve enviar atualizações para a fonte de dados em memória (como DataSet ou DataTable) e o banco de dados back-end, se sua solução usa um.

Você não precisa atualizar explicitamente a fonte de dados em memória quando você executar associação de dados complexos usando o controle de ListObject .Em esse caso, as alterações são enviadas automaticamente para a fonte de dados de memória sem código adicional.

Para obter mais informações, consulte Como: atualizar uma fonte de dados com dados de um controle de Host.

Consulte também

Tarefas

Como: criar um controle vinculado a simples em um Windows Form

Como: atualizar dados usando um TableAdapter

Conceitos

Ligação de dados e o Windows Forms

Vinculando controles do Windows Forms a dados em Visual Studio

Salvar dados em Datasets

Cache de dados

Outros recursos

Como: eu faço Consumir dados do banco de dados do excel?

Data in Office Solutions