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

VB.NET Discussion :

Tri sur une datatable


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Par défaut Tri sur une datatable
    Bonjour,

    Je fais un trie sur une datatable en vb.net 2003 mais le trie ne semble pas fonctionner. J'utilise le code suivant "DTPROD.DefaultView.Sort = ("Animal, DPROD DESC")".

    Lorsque j'affiche l'information dans un datagrid le tri est fait. Si j'utilise une boucle pour vérifier ma colonne dams ma datatable, "Animal" n'est pas trié.

    Est-ce que quelqu'un peut m'expliquer pourquoi je voie le trie dans le datagrid mais que ma boucle sur ma datatable me donne des rangées pas triées.

    Merci!

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Salut.

    J'imagine que la propriété DefautView correspond justement a un tri de Vue lorsque les données sont affiché dans un Datagrid.

    Si tu veux ta datatble trié, tu ne peux pas directement le faire dans ta requete, si comme je le suppose tes données proviennent d'une base de données?

  3. #3
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Par défaut
    Salut,

    Merci infiniment de me répondre.

    Effectivement je crois aussi que le trie est juste pour l'affichage dans un datagrid.

    Non mes données ne proviennent pas d'une BD. Il proviennent d'un fichier XML. Je transfère dans la datatable, je fais quelques manipulations avant de transférer le tout dans une BD. L'important pour moi c'est d'être capable de trier les données avant de faire mes manipulations.

    Merci et bonne journée!

  4. #4
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Donc j'imagine que tu devras faire un tri a la main.

    Tu utilises deux datatables et utilises String.compare (pour un tri par ordre alphabetique)

  5. #5
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Par défaut
    Merci encore pour ta réponse.

    Est-ce que tu penses que je pourrais envoyer mes données dans autre chose qu'une datatable pour faire mon trie? Est-ce qu'il y aurait un autre composant qui me permettrait de faire un trie sur 2 colonnes? Et qui pourrait ensuite être transféré dans une datatable.

    Exemple array, arraylist, dataset ou autre?

    Merci!

  6. #6
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut
    Citation Envoyé par Onig20 Voir le message
    Merci encore pour ta réponse.

    Est-ce que tu penses que je pourrais envoyer mes données dans autre chose qu'une datatable pour faire mon trie? Est-ce qu'il y aurait un autre composant qui me permettrait de faire un trie sur 2 colonnes? Et qui pourrait ensuite être transféré dans une datatable.

    Exemple array, arraylist, dataset ou autre?

    Merci!
    Maybe un DataView.

  7. #7
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Je crois que Array.Sort existe. Si c'est le cas ca ira plus vite.

    Sinon avec deux Datatables et un petit algo ca fonctionne bien. A toi de voir

  8. #8
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Tu dois utiliser la defautview de ta dataTable et non pas directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datatable.rows(index).item
    si ma mémoir est bonne c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datatable.defautview.item(index).item

  9. #9
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Par défaut
    Bonjour Sankasssss,

    Est-ce que tu peux élaborer sur le code que tu m'as écrit. Est-ce que je pourrais utiliser cela pour faire un trie sur ma datatable mais pas juste pour l'affichage?

    Merci!

  10. #10
    Membre expérimenté Avatar de AJemni
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2008
    Messages : 242
    Par défaut
    Bonjour,
    tu peut toujours utilisé la DefaultView comme DataTable,
    modifie un peut ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DTPROD.DefaultView.Sort = "Animal, DPROD DESC"
    et puis essay de faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tonDataGrid.DataSource = DTPROD.DefaultView.ToTable();
    A+

  11. #11
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Citation Envoyé par Onig20 Voir le message
    Bonjour Sankasssss,

    Est-ce que tu peux élaborer sur le code que tu m'as écrit. Est-ce que je pourrais utiliser cela pour faire un trie sur ma datatable mais pas juste pour l'affichage?

    Merci!
    Pour de plus ample explication, il faut allé voir defautView de datatable qui te mènera sur "DataView, classe" qui te montrera comment celui-ci fonctionne...


    En réalité, quand tu lies une table à un datagrid et que tu tries celui-ci, ne fuse qu'en cliquant sur une colonne, si un élément est en premier dans ta grille, il ne l'est pas réellement dans ton dataTable, donc tu dois employer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaDataTable.DefaultView.Item(iRow).Item(iCol)
    pour récupérer ou assigner une valeur à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaDataTable.rows(iRow).Item(iCol)
    dans le premier cas, tu travailleras sur la vue par défaut ou tu aura fait le tri, dans le second sur la table non triée...

    EDIT : Tu trouveras un exemple bien mieux fait sur MSDN du deuxieme lien ci-dessus

    Citation Envoyé par AJemni Voir le message
    Bonjour,
    tu peut toujours utilisé la DefaultView comme DataTable,
    modifie un peut ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DTPROD.DefaultView.Sort = "Animal, DPROD DESC"
    et puis essay de faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tonDataGrid.DataSource = DTPROD.DefaultView.ToTable();
    A+
    Pas besoin de faire ceci car quand tu lie simplement une table à tonDataGrid, celui-ci utilise directement le defautView de la table... donc ceci suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tonDataGrid.DataSource = DTPROD
    (pour preuve, quand tu cliques sur une colonne celle-ci ce trie sans changer le dataTable lié...)

  12. #12
    Membre expérimenté Avatar de AJemni
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2008
    Messages : 242
    Par défaut
    Citation Envoyé par Sankasssss Voir le message
    Pas besoin de faire ceci car quand tu lie simplement une table à tonDataGrid, celui-ci utilise directement le defautView de la table... donc ceci suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tonDataGrid.DataSource = DTPROD
    (pour preuve, quand tu cliques sur une colonne celle-ci ce trie sans changer le dataTable lié...)
    vous êtes sûr là? vous réduisez une table en une vue!! simplement en la définissant comme source!
    Benh, je vais voir de mon coté...

  13. #13
    Membre expérimenté Avatar de AJemni
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2008
    Messages : 242
    Par défaut
    Salut,

    Sankasssss, j'ai vérifié et vous avez raison, pas besoin de en faite j'ai vérifié avec le 'Sort' et 'RowFilter' et le dataGrid n'affiche que le résultat de la View...

    Beenh, rien à dire...

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/11/2011, 17h58
  2. Tri sur une chaîne de caractères contenant des nombres
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/05/2006, 11h52
  3. Réponses: 16
    Dernier message: 10/11/2005, 22h51
  4. tri sur une partie d'un champ
    Par yoline dans le forum Access
    Réponses: 4
    Dernier message: 19/09/2005, 11h25
  5. [JSP] tri sur une colonne
    Par soony dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 28/07/2005, 15h02

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