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

C# Discussion :

Trier un Datagridview


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut Trier un Datagridview
    Salut !


    Je désire trier un Datagridview; pour cela j'emploie cette méthode (la dernière ligne du code) :

    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
    private void Form2_Load(object sender, EventArgs e)
            {
                List<BO.PersonneBO> obj;
                obj = BL.Class1.SelectAllList();
                dataGridView1.DataSource = obj;
                dataGridView1.Columns["Id"].Visible = false;
                dataGridView1.Columns["Nom"].ReadOnly = true;
                dataGridView1.Columns["Prenom"].ReadOnly = true;
                dataGridView1.Columns["Age"].ReadOnly = true;
                dataGridView1.Columns["Annif"].DefaultCellStyle.Format = "dd-MM-yyyy";
                dataGridView1.Columns["Annif"].ReadOnly = true;
                dataGridView1.Columns["Intitulé"].Visible = false;
                dataGridView1.MultiSelect = false;
                dataGridView1.Sort(dataGridView1.Columns["Prenom"], System.ComponentModel.ListSortDirection.Ascending);
            }
    Seulement, ça me renvoie cette erreur :

    Pour être trié, un contrôle DataGridView doit être lié à l'objet IBindingList
    Qu'est-ce que ça signifie au juste ?

    Merci !

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ca veut dire que la source de données doit implémenter l'interface IBindingList pour que le tri fonctionne. Mais tu utilises une List<T> comme source de données, et List<T> n'implémente pas IBindingList, donc ça marche pas.

    En fait, à part les DataView, il n'y a pas beaucoup d'implémentations de cette interface dans le Framework... il y a bien BindingList<T>, mais ça ne gère pas le tri.

    Par contre tu peux utiliser la classe SortableBindingList<T> de la librairie Dvp.NET, qui est faite pour ça

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Par contre tu peux utiliser la classe SortableBindingList<T> de la librairie Dvp.NET, qui est faite pour ça
    Oulah, ça m'a l'air bien trop sorcier pour le débutant que je suis...


    Merci quand même

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Alors, je vais trier à la source :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                List<BO.PersonneBO> obj;
                obj = BL.Class1.SelectAllList1();
                obj.Sort();


    Seulement, j'avais déjà créé plus tôt dans mon code un interface IComparable qui prenait en paramètre un type PersonneBO :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        public class PersonneBO : IComparable<PersonneBO>
        {
            .....
            public int CompareTo(PersonneBO obj)
            {
                return _Intitulé.CompareTo(obj.Intitulé);
            }
            .....
        }
    Comment créer une seconde fois la méthode CompareTo avec les mêmes paramètres mais qui comparerait sur le nom et plus sur l'intitulé ?...

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Mike888 Voir le message
    Oulah, ça m'a l'air bien trop sorcier pour le débutant que je suis...
    Bah ça n'a rien de sorcier... tu références la lib, et tu utilises cette classe à la place de List<T>. Tu n'as rien de spécial à faire, le tri se fera automatiquement quand tu cliqueras sur l'en-tête d'une colonne

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Oki!



    J'ai une autre petite question qui n'a rien à voir (mais j'ouvre pas un nouveau topic pour pas polluer inutilement).


    Logiquement, si je déclare :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void Form1_Load(object sender, EventArgs e)
            {            
                ...
                this.Hide();
            }
    la form devrait devenir invisible (enfin, se cacher quoi), non ? Pourtant, chez moi, elle apparaît alétoirement !
    Comment ça se fait ? C'est un bug de Windows 7 x64 ?

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Mike888 Voir le message
    J'ai une autre petite question qui n'a rien à voir (mais j'ouvre pas un nouveau topic pour pas polluer inutilement).
    Justement, ouvre un nouveau topic si ça n'a rien à voir
    Comme ça si quelqu'un cherche des infos sur un sujet précis, c'est plus facile de trouver les discussions qui en parlent

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Bah ça n'a rien de sorcier... tu références la lib, et tu utilises cette classe à la place de List<T>. Tu n'as rien de spécial à faire, le tri se fera automatiquement quand tu cliqueras sur l'en-tête d'une colonne
    Je ne m'en sors pas du tout... J'ai beau chercher, je ne comprends vraiment pas ce que je dois faire !

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    C'est bon, ça marche (je cherchais 12H à 14H)...

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

Discussions similaires

  1. Trier une colonne de type date dans un datagridview
    Par eviolleau dans le forum VB.NET
    Réponses: 12
    Dernier message: 26/03/2010, 17h56
  2. [C#] trier DataGridView
    Par Hurin dans le forum C#
    Réponses: 7
    Dernier message: 09/11/2008, 19h17
  3. trier datagridView c#
    Par firasDev dans le forum C#
    Réponses: 11
    Dernier message: 12/08/2008, 15h27
  4. trier date dans datagridview (sous forme shortdate)
    Par salihovic dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/11/2007, 17h18

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