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 :

Grouper des lignes selon un champs dans une listView


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut Grouper des lignes selon un champs dans une listView
    Bonjour, dans une table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DossierRejeter(#CodeMotif, #NumDemande, DateRejet)  avec CodeMotif+NumDemande est une clé primaire
    , Dans un winFrom je saisie le numéro du dossier, il doit m'afficher la liste des rejets ainsi que les motifs relatif à ce dossier, le problème c'est que j'affiche cette liste dans une listView, cela ce fait avec succès sauf que il m'affiche les lignes séparemment cad :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    numDossier    MotifRejet                     DateRejet
     
    6666             Absence du doc1           26/02/2009  
    6666             Absence du doc2           26/02/2009 
    6663                  ....                              ...
    Mon but est de groupé les ligne qui ont le meme numéro du dossier et bien sur la meme date et d'afficher l'ensemble des Motifs, je sais pas si je peux faire ca avec monlistView ?


    Merci

  2. #2
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Salut.

    Ca se passe au niveau de ta requête si tu veux regrouper les lignes qui ont la même date ou le même numéro.

    Pour ça, dans ton select, tu mets un distinct devant le champ où il y a des doubles.

    Pour plus d'info', tu peux aller par exemple.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    Non parceque dans ces cas la elle n'aura QUE le numero de dossier (si c'est ce qu'elle demande dans sa requete).
    Je ne crois pas que c'est ce qu'elle souhaite.
    J'imagine qu'elle souhaite avoir un genre d'expand/collapse par numero de dossier afin de pouvoir consulter le detail de chaque rejet.

  4. #4
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    exactement, je cherche quelque chose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    numDossier    MotifRejet                                      DateRejet
     
    6666             Absence du doc1 -  Absence du doc2         26/02/2009  
    6663                  ....                              ...
    Au lie de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    numDossier    MotifRejet                     DateRejet
     
    6666             Absence du doc1           26/02/2009  
    6666             Absence du doc2           26/02/2009 
    6663                  ....                              ...
    Je crois que le groupement je dois le faire au niveau de ma procédure stockée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT  * FROM [MotifRejet]
     
    WHERE [numDemande] IN ( SELECT [numDemande] FROM [Demande] WHERE [CodeVehicule] IN(SELECT [CodeVehicule] FROM [Vehicule] WHERE [VIN] =@VIN))

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    Dans ce cas la je pense que c'est assez simple.
    Tu as juste besoin de boucler sur tes enregistrement et si ils ont le meme numero de dossier tu fais une concatenation de la raison et comme ca tu auras une seule ligne avec les raisons a la suite

  6. #6
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    votre réponse est bien logique, mais comment puis je faire ca ? ca sera au niveau de ma procédure ou au niveau de mon code ?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    au niveau du code je pense.
    Niveau SQL je ne pense pas que ce soit plus simple (je dis bien "pense")

  8. #8
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    au niveau de mon code je fait comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    lvRejet.Items.Clear();
                rejets.LoadRejetByVIN(vehiculeSelected.VIN);
     
     
                for (int i = 0; i < rejets.Count; i++)
                {
                    if (rejets[i] != null)
                    {
                        MotifRejet rejet = rejets[i];
                        this.AddRejetToLV(rejet);
                        rejets[i] = null;
                    }
                }
    Code : 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
    private void AddRejetToLV(MotifRejet mrejet)
            {
                BaseMotifs bMotifs = new BaseMotifs();
                bMotifs.LoadMotif();
                ListViewItem item = new ListViewItem(new string[] { mrejet.NumDemande.ToString(), mrejet.DateRejet.ToString(), 
                    bMotifs.FindMotifLabel(mrejet.CodeMotif) });
                item.ImageIndex = 0;
     
                if ((this.lvRejet.Items.Count % 2) == 0)
                {
                    item.BackColor = ColorTranslator.FromHtml("#C0D9F8");
                }
                else
                {
                    item.BackColor = ColorTranslator.FromHtml("#EAEEF1");
                }
                this.lvRejet.Items.Add(item);
     
            }
    comment puis je grouper ca ?

  9. #9
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    Maintenant ma listView m'affiche motifs d'un rejet groupé mais il sont se repete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    numDossier    MotifRejet                                      DateRejet
     
    6666             Absence du doc1 - Absence du doc2           26/02/2009  
    6666             ence du doc1 - Absence du doc2            26/02/2009 
    6663                  ....                              ...
    Code : 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
    string sDate = string.Format("{0}/{1}/{2} ", mrejet.DateRejet.Day, mrejet.DateRejet.Month, mrejet.DateRejet.Year);
     
                ListViewItem item = new ListViewItem(new string[] { mrejet.NumDemande.ToString(),sDate , 
                    rejets.FindRejetByDemande(mrejet.NumDemande) });
                item.ImageIndex = 0;
     
                if ((this.lvRejet.Items.Count % 2) == 0)
                {
                    item.BackColor = ColorTranslator.FromHtml("#C0D9F8");
                }
                else
                {
                    item.BackColor = ColorTranslator.FromHtml("#EAEEF1");
                }
                this.lvRejet.Items.Add(item);
     
            }
    Comment puis je empeché la redondance des lignes ???

  10. #10
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    Merci c'est fait, j'ai juste ajouté un distinct champs1, champs2 au lien de *.Merciiiiiiiiiiiiiii

  11. #11
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Hahahaha j'avais raison !! xD
    ok je sors...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/02/2010, 01h07
  2. Transférer des lignes d'un datastore dans une table SQL
    Par Deedoo2000 dans le forum Powerbuilder
    Réponses: 7
    Dernier message: 30/10/2006, 14h55
  3. Réponses: 1
    Dernier message: 19/03/2006, 20h52
  4. Réponses: 2
    Dernier message: 19/05/2004, 10h13
  5. Réponses: 4
    Dernier message: 24/04/2003, 22h28

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