Comment : valider des modifications in-process sur des contrôles liés aux données avant d'enregistrer des données
Lors de la modification de valeurs dans les contrôles liés aux données, les utilisateurs doivent sortir de l'enregistrement actif pour valider la valeur mise à jour dans la source de données sous-jacente à laquelle le contrôle est lié. Lorsque vous faites glisser des éléments de la Sources de données (fenêtre) sur un formulaire, le premier élément que vous déplacez génère le code dans l'événement lié à un clic sur le bouton Enregistrer du BindingNavigator. Ce code appelle la méthode EndEdit du BindingSource. Par conséquent, l'appel à la méthode EndEdit est généré uniquement pour le premier BindingSource ajouté au formulaire.
L'appel EndEdit valide toutes les modifications in-process dans tous les contrôles liés aux données actuellement modifiés. Par conséquent, si un contrôle lié aux données a encore le focus et que vous cliquez sur le bouton Enregistrer, toutes les modifications en attente dans ce contrôle sont validées avant l'enregistrement réel (méthode TableAdapterManager.UpdateAll).
Vous pouvez configurer votre application pour valider automatiquement des modifications, même si un utilisateur essaie d'enregistrer des données sans valider les modifications dans le cadre du processus d'enregistrement.
Notes
Le concepteur ajoute le code BindingSource.EndEdit uniquement pour le premier élément déposé sur un formulaire.Vous devez par conséquent ajouter une ligne de code pour appeler la méthode EndEdit pour chaque BindingSource sur le formulaire.Vous pouvez ajouter manuellement une ligne de code pour appeler la méthode EndEdit pour chaque BindingSource.Vous pouvez également ajouter la méthode EndEditOnAllBindingSources au formulaire et l'appeler avant d'effectuer un enregistrement.
Le code suivant utilise une requête LINQ (Language-Integrated Query) pour itérer sur tous les composants BindingSource et appeler la méthode EndEdit pour chaque BindingSource sur un formulaire.
Pour appeler EndEdit pour tous les composants BindingSource sur un formulaire
Ajoutez le code suivant au formulaire qui contient les composants 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(); } }
Ajoutez la ligne de code suivante juste avant tous les appels pour enregistrer les données du formulaire (méthode TableAdapterManager.UpdateAll()) :
Me.EndEditOnAllBindingSources()
EndEditOnAllBindingSources();
Voir aussi
Référence
Vue d'ensemble du composant BindingSource
Concepts
Vue d'ensemble de la mise à jour hiérarchique