Atualizar uma fonte de dados com dados de um controle de host

Você pode vincular um controle de host a uma fonte de dados e atualizar a fonte de dados com as alterações feitas nos dados no controle. Há duas etapas principais nesse processo:

  1. Atualize a fonte de dados na memória com os dados modificados no controle. Normalmente, a fonte de dados na memória é um , um DataSet, ou DataTablealgum outro objeto de dados.

  2. Atualize o banco de dados com os dados alterados na fonte de dados na memória. Isso será aplicável somente se a fonte de dados estiver conectada a um banco de dados back-end, como um banco de dados do SQL Server ou do Microsoft Office Access.

    Para obter mais informações sobre controles de host e associação de dados, consulte Visão geral de itens de host e controles de host e Vincular dados a controles em soluções do Office.

    Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de suplemento VSTO para Excel e Word. Para obter mais informações, consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.

Atualizar a fonte de dados na memória

Por padrão, os controles de host que habilitam a vinculação de dados simples (como controles de conteúdo em um documento do Word ou um controle de intervalo nomeado em uma planilha do Excel) não salvam as alterações de dados na fonte de dados na memória. Ou seja, quando um usuário final altera um valor em um controle de host e, em seguida, navega para fora do controle, o novo valor no controle não é salvo automaticamente na fonte de dados.

Para salvar os dados na fonte de dados, você pode escrever código que atualiza a fonte de dados em resposta a um evento específico em tempo de execução ou pode configurar o controle para atualizar automaticamente a fonte de dados quando o valor no controle for alterado.

Não é necessário salvar ListObject as alterações na fonte de dados na memória. Quando você vincula um ListObject controle a dados, o ListObject controle salva automaticamente as alterações na fonte de dados na memória sem exigir código adicional.

Para atualizar a fonte de dados na memória em tempo de execução

  • Chame Binding o método do objeto que vincula o WriteValue controle à fonte de dados.

    O exemplo a seguir salva as alterações feitas em um NamedRange controle em uma planilha do Excel na fonte de dados. Este exemplo pressupõe que você tenha um controle nomeado namedRange1 com sua Value2 propriedade vinculada a um NamedRange campo em uma fonte de dados.

    this.namedRange1.DataBindings["Value2"].WriteValue();
    

Atualizar automaticamente a fonte de dados na memória

Você também pode configurar um controle para que ele atualize automaticamente a fonte de dados na memória. Em um projeto de nível de documento, você pode fazer isso usando o código ou o designer. Em um projeto de suplemento VSTO, você deve usar código.

Para definir um controle para atualizar automaticamente a fonte de dados na memória usando código

  1. Use o modo System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged do Binding objeto que vincula o controle à fonte de dados. Há duas opções para atualizar a fonte de dados:

    • Para atualizar a fonte de dados quando o controle é validado, defina essa propriedade como System.Windows.Forms.DataSourceUpdateMode.OnValidation.

    • Para atualizar a fonte de dados quando o valor da propriedade associada a dados do controle for alterado, defina essa propriedade como System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged.

      Observação

      A opção System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged não se aplica a controles de host do Word, porque o Word não oferece notificações de alteração de documento ou alteração de controle. No entanto, essa opção pode ser usada para controles do Windows Forms em documentos do Word.

      O exemplo a seguir configura um NamedRange controle para atualizar automaticamente a fonte de dados quando o valor no controle é alterado. Este exemplo pressupõe que você tenha um controle nomeado namedRange1 com sua Value2 propriedade vinculada a um NamedRange campo em uma fonte de dados.

      this.namedRange1.DataBindings["Value2"].DataSourceUpdateMode = 
          DataSourceUpdateMode.OnPropertyChanged;
      

Para definir um controle para atualizar automaticamente a fonte de dados na memória usando o designer

  1. No Visual Studio, abra o documento do Word ou a pasta de trabalho do Excel no designer.

  2. Clique no controle que você deseja atualizar automaticamente a fonte de dados.

  3. Na janela Propriedades, expanda a propriedade (DataBindings).

  4. Ao lado da propriedade (Advanced), clique no botão de reticências (VisualStudioEllipsesButton screenshot).

  5. Na caixa de diálogo Formatação e Vinculação Avançada, clique na lista suspensa Modo de Atualização da Fonte de Dados e selecione um dos seguintes valores:

    • Para atualizar a fonte de dados quando o controle for validado, selecione OnValidation.

    • Para atualizar a fonte de dados quando o valor da propriedade associada a dados do controle for alterado, selecione OnPropertyChanged.

      Observação

      A opção OnPropertyChanged não se aplica a controles de host do Word, porque o Word não oferece notificações de alteração de documento ou alteração de controle. No entanto, essa opção pode ser usada para controles do Windows Forms em documentos do Word.

  6. Feche a caixa de diálogo Formatação e Vinculação Avançada .

Atualizar o banco de dados

Se a fonte de dados na memória estiver associada a um banco de dados, você deverá atualizá-lo com as alterações na fonte de dados. Para obter mais informações sobre como atualizar um banco de dados, consulte Salvar dados de volta ao banco de dados e Atualizar dados usando um TableAdapter .

Para atualizar o banco de dados

  1. Chame o EndEdit BindingSource método do para o controle.

    O BindingSource é gerado automaticamente quando você adiciona um controle associado a dados a um documento ou pasta de trabalho em tempo de design. O BindingSource conecta o controle ao conjunto de dados digitado em seu projeto. Para obter mais informações, consulte Visão geral do componente BindingSource.

    O exemplo de código a seguir pressupõe que seu projeto contém um BindingSource nome customersBindingSource.

    this.customersBindingSource.EndEdit();
    
  2. Chame o Update método do TableAdapter gerado em seu projeto.

    O TableAdapter é gerado automaticamente quando você adiciona um controle associado a dados a um documento ou pasta de trabalho em tempo de design. O TableAdapter conecta o conjunto de dados digitado em seu projeto ao banco de dados. Para obter mais informações, consulte Visão geral do TableAdapter.

    O exemplo de código a seguir pressupõe que você tenha uma conexão com a tabela Customers no banco de dados Northwind e que seu projeto contenha um TableAdapter nomeado customersTableAdapter e um conjunto de dados tipado chamado northwindDataSet.

    this.customersTableAdapter.Update(this.northwindDataSet.Customers);