Como: Confirmar edições em processo, em controles ligados a dados antes de salvar dados
Ao editar valores em controles vinculados a dados, usuários devem navegar fora do registro atual para confirmar o valor atualizado à fonte de dados subjacente à qual o controle está vinculado.Ao arrastar itens da Janela fontes de dados para um formulário, o primeiro item que você solta gera código para o evento de clicar no botão de salvar BindingNavigator.Esse código chama o método EndEdit do BindingSource.Portanto, a chamada ao método EndEdit é gerada somente para o primeiro BindingSource que é adicionado ao formulário.
A chamada EndEdit 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 vinculado a dados ainda tem foco e você clicar no botão Save, todas edições pendentes nesse controle são confirmadas antes de salvar (o método TableAdapterManager.UpdateAll).
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 processo de salvar.
Observação |
---|
O designer adiciona o código BindingSource.EndEdit somente para o primeiro item descartado em um formulário.Portanto, você precisa adicionar uma linha de código para chamar o método EndEdit para cada BindingSource no formulário.Você pode adicionar manualmente uma linha de código para chamar o método EndEdit para cada BindingSource.Como alternativa, você pode adicionar o método EndEditOnAllBindingSources para o formulário e chamá-lo antes de salvar. |
O código a seguir usa uma consulta LINQ (consulta integrada à linguagem) para iterar todos os componentes BindingSource e chamar o método EndEdit para cada BindingSource em um formulário.
Para chamar EndEdit para todos os componentes BindingSource em um formulário
Adicione o seguinte código ao formulário que contém os componentes BindingSource.
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
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(); } }
Adicione a seguinte linha de código imediatamente antes de quaisquer chamadas para salvar os dados do formulário (o método TableAdapterManager.UpdateAll()):
Me.EndEditOnAllBindingSources()
EndEditOnAllBindingSources();
Consulte também
Referência
Visão geral sobre o componente BindingSource
Conceitos
Visão geral de atualização hierárquica