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 :

Choisir entre DataGridView et Listview


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Par défaut Choisir entre DataGridView et Listview
    Bonjour à tous,

    je cherche à savoir quelle solution serait la meilleure pour moi entre un Datagridview et un listview.

    Première des choses... les données que je reçoit provienne d'un stream TCP, donc, je dois les formater pour les afficher dans le container. (en gros, c'Est des données séparées par des , mais certaines chaines contiennent des ,.... donc difficile de faire passé ça pour un CSV)

    Je dois pouvoir faire un filtre sur les lignes ainsi que les triées. Je veux aussi pouvoir faire un tri par colonne, et changer la couleur de son header.

    j'ai pour le moment essayé avec le Listview, je n'ai toujours pas trouvé la solution pour changer la couleur du header de la colonne... et finalement, je ne suis pas capable de filtrer les données.... (j'essaie d'enlever les lignes, et ça marche plus ou moins bien.... et quand j'essaie de "dÉfiltrer" c'est très très long... )

    Donc, quel est votre opinion, et avez vous des solutions à mes petits problèmes.?

    Merci
    FadeOut

  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 : 43
    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
    Sans hésitation : utilise un DataGridView. ListView est très limité dans ses fonctionnalités, c'est juste un wrapper d'un contrôle Win32. Le DGV supporte le data binding (liaison de données) : tu peux affecter une liste ou un DataSet à sa DataSource, et ça remplit automatiquement la grille. La cohérence est maintenue entre la grille et la source de données : si tu modifies l'une, ça modifie l'autre, et inversement.

    Si tu as besoin de faire du filtrage, un DataSet me semble particulièrement indiqué... Tu peux facilement appliquer des filtres, c'est très rapide, et le DataGridView se met à jour tout seul.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Par défaut
    C'est bien ce que je craignais....


    bon... on va se tapper une ou deux heures de recustomization ce soir....!!!!



    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Par défaut
    Oups, je réouvre le dossier....


    le dataset au juste, on le rempli comment? (manuellement je veux dire...)

  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 : 43
    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
    En général on le remplit à partir d'une base de données avec un DataAdapter... en l'occurence, vu que les données ne viennent pas d'une BDD, il faut le faire à la main.

    Dans le DataSet, tu crées une DataTable
    Dans la DataTable, tu crées des colonnes pour les champs de tes données en entrée
    Pour chaque donnée en entrée, tu ajoutes une DataRow à ta DataTable en remplissant chaque champ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DataRow row = table.NewRow();
    row["champ1"] = champ1;
    row["champ2"] = champ2;
    ...
    table.Rows.Add(row);
    Ensuite tu peux filtrer les résultats avec une DataView ou une BindingSource :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DataView view = new DataView(table,
                                 "champ1 = 3", // filtre
                                 "champ2", // critère de tri
                                 DataViewRowState.CurrentRows);
    dataGridView1.DataSource = view;
    Ensuite tu peux modifier le filtre et le critère de tri si tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    view.RowFilter = "champ1 = 4";
    view.Sort = "champ3 desc, champ4"; // trié par champ3 décroissant, puis par champ4 croissant
    Pour plus de détails sur la syntaxe des filtres, regarde la doc de la propriété DataColumn.Expression

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Par défaut
    Ok,

    je crois pouvoir raisonner tout ça.... merci....

    je ne ferme pas tout de suite, au cas ou, mais d'ici 1 heure, ça devrait etre bon....

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Par défaut
    Malheureusement, un petit os....


    En gros, j'ai 8 classes différentes qui vont toutes utilisés un UserControl personnnalisé...

    chacune des classes va avoir une méthode getDataRow (qui s'appelait getListViewItem avant) ... sauf que... misère!!!! Je ne peux créer de dataRow sans une DataTable.... je suis donc dans l'impasse....

  8. #8
    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 : 43
    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
    Eh, il faut dormir la nuit

    Citation Envoyé par FadeOut Voir le message
    chacune des classes va avoir une méthode getDataRow (qui s'appelait getListViewItem avant) ... sauf que... misère!!!! Je ne peux créer de dataRow sans une DataTable.... je suis donc dans l'impasse....
    Quel est le problème exactement ? Tu pourrais passer la DataTable en paramètre de getDataRow, non ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Par défaut
    En effet, très bonne idée.....


    (c'Est vrai que je dors peut-etre pas assez la nuit, mais je me suis couché tot hier... 21h45..... c'est ça le Québec... on est en retard sur l'Europe nous!! )



    Merci... je crois que enfin... c'est résolu....

  10. #10
    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 : 43
    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 FadeOut Voir le message
    (c'Est vrai que je dors peut-etre pas assez la nuit, mais je me suis couché tot hier... 21h45..... c'est ça le Québec... on est en retard sur l'Europe nous!! )
    Ah ok, il me manquait un paramètre dans l'histoire... c'est moi qui devrait me coucher plus tôt

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

Discussions similaires

  1. Comment faire pour choisir entre plusieur elements d'un filelist ?
    Par MegaBigBoss dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 21/07/2006, 18h51
  2. Choisir entre email et ftp
    Par cjacquel dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 15/06/2006, 16h48
  3. [UML][Debutant]Choisir entre une classe et une interface ?
    Par Laurent Dardenne dans le forum Diagrammes de Classes
    Réponses: 11
    Dernier message: 24/04/2006, 20h45
  4. Choisir entre php et XSL
    Par vg33 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 15/04/2006, 02h40
  5. [FEDORA] Lequel choisir entre Fedora i386 et x86 pour un xeon?
    Par Oberon dans le forum RedHat / CentOS / Fedora
    Réponses: 7
    Dernier message: 13/07/2004, 14h52

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