Compartilhar via


Confirmar edições em processo em controles ligados a dados antes de salvar dados

 

Publicado: abril de 2016

Ao editar valores em controles ligados a dados, usuários devem navegar fora do registro atual para confirmar o valor atualizado à fonte de dados subjacente que o controle está vinculado. Quando você arrasta itens do Janela Fontes de Dados em um formulário, o primeiro item que você solta gera código para salvar eventos de clique de botão a BindingNavigator. Esse código chama o EndEdit método o BindingSource. Portanto, a chamada para o EndEdit método é gerado somente para o primeiro BindingSource que é adicionado ao formulário.

O EndEdit chamada confirma as alterações que estão em processo em quaisquer controles ligados a dados que estão sendo editados atualmente. Portanto, se um controle ligado a dados ainda tem foco e você clicar o Salvar botão, todas as edições pendentes nesse controle serão confirmadas antes de salvar (o TableAdapterManager.UpdateAll método).

Você pode configurar seu aplicativo para confirmar as alterações, automaticamente, mesmo se um usuário tentar salvar dados sem confirmar as alterações, como parte do salvamento processo.

Dica

O designer adiciona o BindingSource.EndEdit código somente para o primeiro item descartado em um formulário. Portanto, você precisa adicionar uma linha de código para chamar o EndEdit método para cada BindingSource no formulário. Você pode adicionar manualmente uma linha de código para chamar o EndEdit método para cada BindingSource. Como alternativa, você pode adicionar o EndEditOnAllBindingSources método para o formulário e chamá-lo antes de salvar.

O código a seguir usa um LINQ (Consulta Integrada à Linguagem) consulta para iterar todos os BindingSource componentes e chamar o EndEdit método para cada BindingSource em um formulário.

Para chamar EndEdit para todos os componentes BindingSource em um formulário

  1. Adicione o seguinte código ao formulário que contém o BindingSource componentes.

            private void EndEditOnAllBindingSources()
            {
                var BindingSourcesQuery =
                    from Component bindingSources in this.components.Components
                    where bindingSources is BindingSource
                    select bindingSources;
    
                foreach (BindingSource bindingSource in BindingSourcesQuery)
                {
                    bindingSource.EndEdit();
                }
            }
    
        Private Sub EndEditOnAllBindingSources()
            Dim BindingSourcesQuery = From bindingsources In Me.components.Components 
                          Where (TypeOf bindingsources Is Windows.Forms.BindingSource) 
                          Select bindingsources
    
            For Each bindingSource As Windows.Forms.BindingSource In BindingSourcesQuery
                bindingSource.EndEdit()
            Next
        End Sub
    
  2. Adicione a seguinte linha de código imediatamente antes de quaisquer chamadas para salvar os dados do formulário (o TableAdapterManager.UpdateAll() método):

                EndEditOnAllBindingSources();
    
            Me.EndEditOnAllBindingSources()
    

Consulte também

Associar controles dos Windows Forms a dados no Visual Studio
Atualização hierárquica