IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Binding forms - annulation des modifs


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 221
    Points : 88
    Points
    88
    Par défaut Binding forms - annulation des modifs
    Bonjour,

    J'ai encore besoin de votre. J'ai regardé les Webcasts de Mistu sur le databinding avancé et j'ai essayé de faire un peu la même chose.
    J'ai un formulaire frmListeArticle avec un datagridview binder sur une collection d'objet.
    J'ai un bouton qui permet d'accéder au détail de l'objet (frmEditArticle).

    Le code sur l'événement click de mon bouton :
    frmEditArticle.EditArticle((ArticleEntity)articleEntityBindingSource.Current); ==> appel de la fonction frmEditArticle en passant l'élément courant

    Le code dans ma frmEditArticle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            public static void EditArticle(ArticleEntity article)
            {
                using (frmEditArticle formArticle = new frmEditArticle())
                {
                     formArticle.articleEntityBindingSource.DataSource = article;
                    formArticle.StartPosition = FormStartPosition.CenterParent;
                    if (formArticle.ShowDialog() == DialogResult.Ok) {
                         // On valide l'enregistrement des données
                   } else {
                         // On invalide le changement
                        articleEntityBindingSource.CancelEdit
                   }
            }
    Je ne sais pas comment faire pour annuler mes modifs lorsque l'utilisateur clique sur le bouton annuler.
    j'ai essayé articleEntityBindingSource.CancelEdit mais ça ne fonctionne pas et mes modifs sont toujours visibles sur mon DataGridView lorsque je quitte la form frmEditArticle.

    Merci à tous

  2. #2
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Salut !

    En premier lieu, assure-toi que ta classe ArticleEntity implémente l'interface IEditableObject.
    (\ _ /)
    (='.'=)
    (")-(")

  3. #3
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 221
    Points : 88
    Points
    88
    Par défaut
    En effet, ma classe ArticleEntity n'implémente pas IEditableObject
    Je t'avoue que je ne comprends pas, je pensais que le bindingsource implémentait cette interface
    Si j'implémente l'interface IEditableObject sur ma classe, je dois également implémenter le méthodes de l'interface (BeginEdit, CanceEdit et EndEdit). Qu'est ce que je dois mettre dedans ???

  4. #4
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    je pensais que le bindingsource implémentait cette interface
    non le BindingSource sait utiliser les méthodes IEditableObject, c'est tout.

    je dois également implémenter le méthodes de l'interface (BeginEdit, CanceEdit et EndEdit)
    Tu as un exemple dans l'aide MSDN il me semble.

    C'est pas bien compliqué. Ton bindingSource va invoquer BeginEdit sur ton objet éditable dès que cet objet devient l'objet courant. Dans ta classe, cela signifie que ton objet autorise la modification de ses données et que toutes ces modifications peuvent être annulées lors d'un appel de CanceEdit, si EndEdit n'a pas été appelé au préalable pour commiter les modifications.

    Après chaque appel de CanceEdit ou EndEdit, le bindingSource invoque à nouveau BeginEdit.

    Concrètement cela signifie qua ta classe doit pouvoir stocker temporairement toutes les valeurs d'origines (celles d'avant l'appel de BeginEdit). Donc dans le corps des différentes méthodes BeginEdit, CanceEdit et EndEdit, tu écris ton propre code de stockage temporaire, et de restauration ou de validation définitive des données saisies.
    (\ _ /)
    (='.'=)
    (")-(")

  5. #5
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 221
    Points : 88
    Points
    88
    Par défaut
    Merci FRED pour toutes ces réponses

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Je reviens sur ce post pour soumettre une nouvelle question :

    J'ai deux classes :
    - une classe SortableBindingList, IeditableObject qui est une collection de contact.
    - une classe contact (avec les propriétés des contacts) qui est INotifyPropertyChanged et IeditableObject.

    Je remplis ma collection de contact avec 5 contacts par exemple et je lie cette collection à un datagridview.

    J'aimerai pouvoir annuler toutes mes modifications de ma collection si je clique sur un bouton Annuler. (ex : j'ai modifié 2 lignes, je clique sur Annuler, je reviens à la situation initiale).
    Malheureusement, on ne rentre jamais dans le code du BeginEdit de la collection.

    Voyez-vous une solution ???

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/10/2010, 15h46
  2. Gérer l'annulation des modifications
    Par greenzephyr dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 08/03/2010, 18h56
  3. [JAXB] Modification du binding par défaut des types (xsd:decimal -> BigDecimal)
    Par jcdonnart dans le forum Persistance des données
    Réponses: 0
    Dernier message: 03/12/2008, 18h09
  4. Annuler des modifications sur BindingSource.Current
    Par BnJ99 dans le forum Framework .NET
    Réponses: 3
    Dernier message: 29/06/2007, 14h34
  5. [formulaire] Annuler des modifications
    Par stéphane_ais2 dans le forum IHM
    Réponses: 5
    Dernier message: 24/11/2006, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo