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 Presentation Foundation Discussion :

Datagrid WPF ToolKIT


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 18
    Points : 12
    Points
    12
    Par défaut Datagrid WPF ToolKIT
    Bonjour,

    1) Est ce que quelqu'un sait pourquoi lorsque l'on met e.Cancel=True de l'évènement CellEndEdit du datagrid, l'évenement est rappelé aussitot? Ce qui applique deux fois mon code.

    En fait, j'avais pour objectif de mettre un control de validation dans ce code, et d'empecher l'utilisateur de sortir tant que la cellule n'est pas valide, avec un petit messagebox qui lui explique la raison et une fenêtre qui s'ouvre en lui proposant de choisir sa valeur parmis une liste si c'est possible (tout dépend de la colonne) Et la fin d'édition de la ligne j'ai une instruction SQL de généré, UPDATE ou INSERT.(Et je veux pouvoir faire les insert et les update au fur et à mesure de la saisie de l'utilisateur, pour différentes raisons)

    De plus lorsque l'on met un appel à une méthode, fonction, ..., dans l'évènement du CellEndEdit, l'option d'ajout de ligne automatique du datagrid ne marche plus.

    Que ce soit le CellEndEdit ou le RowEndEdit ses comportements sont les mêmes.

    Je me suis donc tournée vers les IDataErrorInfo et les IEditableObject, mais la je retrouve le même problème EndEdit est appelé deux fois (Pourquoi?). De plus, lorsque l'utilisateur presse la touche echap, il se produit une annulation graphiquement, mais apparament pas sur mon objet (CancelEdit est pas appelé).

    Je n'arrive pas à trouver de solution pour gérer ce genre de comportement

    2) J'utilise en fait la technique de l'ajout de ligne automatique du datagrid pour ajouter un nouvel element dans le tableau, l'evenement NewItem est donc bien implémenté, mais voila si l'utilisateur vient modifier une ligne vierge, NewItem est appelé, il rentre ensuite en modification d'une cellule, sur validation (touche entrer par exemple) si c'est pas valide (technique IDataErrorInfo) le focus reste dans le textbox, mais s'il presse la touche Echap, il peut aller modifié d'autre ligne et laisse donc une ligne dans un état non valide.
    Mais le problème ne s'arrete pas là, en éditant une autre ligne il y a un RowEndEdit appelé deux fois et la je retombe dans le problème du 1).
    J'ai donc essayer de supprimer la ligne (Lors du clique sur Echap), mais voila cette ligne étant à l'origine une ligne vierge, en la supprimant, il n'y a plus de ligne vierge dans le tableau, ce qui m'empeche d'ajouter d'autre ligne.(même problème que le 1))

    Je sais pas si tout est bien clair. En fait je me demande si je l'utilise correctement le datagrid.

    Tout mes problèmes vous pouvez les tester sur des cas tous simples, vous prenez le datagrid vous implementer les deux trois évènements vous mettez les points d'arrêt et constater par vous mêmes.

    Si quelqu'un avait un exemple d'utilisation, qui fonctionne bien avec de la validation, et de l'empechement de sortie d'édition d'une ligne s'il elle n'est pas valide, je suis preneur car les tuto ou exemples que j'ai trouvé à son sujet sont assez simple de ce point de vue validation.

    J'ai l'impression que le datagrid est bien pour de la visualisation et de la saisie simple, non ?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    Citation Envoyé par Hawkwood Voir le message
    J'ai l'impression que le datagrid est bien pour de la visualisation et de la saisie simple, non ?
    J'ai beaucoup regretté l'absence de DataGrid dans WPF, j'ai donc testé nombre de ces composants (telerik, infragistic, devexpress, ..., celui que je préfère étant celui de devexpress).

    Et puis j'ai décidé de me faire mon propre datagrid, et en pratiquant WPF j'ai compris pourquoi ce composant n'existait pas à la base. il est inutile, lourds et contraignant.

    Une listview avec gridwiew te permets de faire tant de chose que la grid perd de sa substance.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour, Voilà:
    j'ai été bloqué moi aussi avec CellEndEdit donc j'utilise un vieux truc
    moche et brutal mais ca marche. ca peut aider si on est pressé.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    private Boolean DonE = false; // variable globale à la classe
    
    //________________DANS XAML : ne pas oublier:
    //   <toolkit:DataGrid CellEditEnding="celledit" etc...etc ...
    
    private void celledit(object sender, DataGridCellEditEndingEventArgs e)
            {
                if (DonE == false)
                {
                    
                    string t = (e.EditingElement as TextBox).Text.Trim();  // recupere le texte
                    DataGridColumn dgc = e.Column;
                    DataGridRow dgr = e.Row;
                    int myRow=(int)dgr.GetIndex();
                    
    
                    UpdateYesNo(myRow,dgc.Header.ToString(),t);
                    DonE = false;
                }
            }
    
    
    private void UpdateYesNo(int mrow,string mheader,string mtext)
            {
                DonE = true;
              
                MessageBox.Show("Row : " + mrow + " Header  : " + mheader + " Texte : " +mtext,"Update yes no");
              // si on répond oui à la question  on fait l'update
    // ou autrechose...
    
            }


    voilà ca ne tourne plus en rond... j'èspere que ça peut aider

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/06/2015, 00h22
  2. Problème sur le WPF Toolkit DataGrid click droit
    Par azar121 dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 03/04/2014, 11h16
  3. [WPF {toolkit}] Comment avoir un double header dans une DataGrid ?
    Par XREvo dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 28/01/2010, 15h31
  4. DataGrid WPF Toolkit, Grosse consommation de mémoire
    Par Yo Eight dans le forum Windows Presentation Foundation
    Réponses: 15
    Dernier message: 14/08/2009, 16h50
  5. Problème de binding sur un gridView WPF Toolkit
    Par fragmonster dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 31/07/2009, 11h39

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