Tri dans un datatable

elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006 - 15 févr. 2006 à 10:10
elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006 - 15 févr. 2006 à 16:53
Salut,
J'ai un soucis pour effectuer un tri dans un datatable. Je remplis un combo à partir d'un datatable. Je souhaite trier mon combo. Une fois la datasource déclarée, on ne peut plus effectuer de tri. Je dois donc effectuer le tri sur le datable.
Maus j'ai un soucis sur la syntaxe. Pour effectuer le tri, je n'ai trouvé que la méthode select, qui me fait définir d'abord un critère de sélection, puis un tri.
Concernant ce critère de sélection, il semblerait que si je note un critère qui me prend tout (genre id_article>=0), je n'ai dans mon datarow plus que ce champ là. Or j'ai besoin de deux champs. Comment déclarer la méthode sélect pour avoir autant de champs que voulus dans mon résultat ?
Merci !
A voir également:

10 réponses

olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
15 févr. 2006 à 10:35
on ne tri pas un datatable.
passe par un dataview ca sera plus propre

Rollerman
0
elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006
15 févr. 2006 à 10:43
comment ça on ne trie pas un datatable ?
on peut remplir un combo à partir d'un dataview comme source ?
et comment on passe d'un datatable à un datatview ?
0
TrafMaxime Messages postés 288 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 26 janvier 2012 1
15 févr. 2006 à 10:43
tu peux ajouter autant de filtre que tu veux dans ta requête (mais j'avoue n'avoir pas vraiment saisi le fond du probleme) et les resultats seront tous les champs qui correspondent à tous les critère,
ex de requete :

dim str as string = "select cx.* from t1 where c1 like '"+param1+"' and c2 like '%"+ param2 +"%' "

nb (les % indiquent qu'il peut y avoir des éléments avant et après, genre mots-clés..)

.Maytheforcebewithyou.Maxime.
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
15 févr. 2006 à 10:55
salut,




effectivement tu peux utiliser d'autres composants pour effectuer ce
tri, ce serait surement plus simple. (si tu utilises le framework 2.0 tu peux utiliser le BindingSource)




sinon tu lies ton Combobox au résultat de :







SELECT champ1, champ2 FROM maTable ORDER BY champ1 ASC;



ça c'était la requête SQL et si tu passes par la methode Select de DataTable ça doit faire quelquechose comme ça :





champ1, champ2 ORDER BY champ1 ASC








[ Dalida ]



please, indiquez les version de langage et/ou de plateforme dans vos questions...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006
15 févr. 2006 à 10:55
zut !
donc je disais quand je précise un critère générique pour quand même récupérer tous mes enregistrements (du genre colonne>=0), je n'ai plus qu'une seule colonne dans mon résultat ... Voila mon soucis ...

Je veux juste savoir comment utilsier cette méthode select sur le datatable ...

Vois-tu ?
0
elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006
15 févr. 2006 à 11:07
Merde, j'ai mon début de message qui a sauté ...

Je peux pas faire un tri sur la requête, car après avoir généré mon datatable, j'y ajouter des lignes supplémentaires manuellement. C'est pour ça qu'il n'est pas trié.
Il faut bien que je fasse un tri dessus avant de l'appliquer au combo.
Pour la méthode select, la syntaxe n'est toujours pas bonne (champ1, champ2 ORDER BY champ1 ASC)
C'est bien le quelquechose comme ça que je cherche à obtenir ici !
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
15 févr. 2006 à 12:32
excuse-moi j'ai oublié qu'il faut deux paramètres distintcs :



Select (filterExpression As String, sort As String
)



donc si tu veux tous les enregistrements :

DataTable.Select(String.Empty, "champATrier ASC")

ou

DataTable.Select(String.Empty, "champATrier DESC")



mais le schéma reste le même : tu récupères tous les champs de la table.

et attention la fonction retourne un tableau de DataRow et pas une DataTable





[ Dalida ]
0
elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006
15 févr. 2006 à 12:47
Bah non je ne comprend pas, je récupère un datarow, qui contient le nombre de lignes voulues, mais qui est constitué de deux colonnes, la première étant un index, et la deuxième affichant {system.data.datarow} ...
0
olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
15 févr. 2006 à 13:48
1. tu cree et remplis ton datatable
2. tu cree un dataview a partir de ton datatable
3. tu mets en datasource de ton combo ton dataview
4. tu joues avec les propriétés filter & sort de ton dataview pour modifier ce qui est affiché dans ton combo

Rollerman
0
elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006
15 févr. 2006 à 16:53
Bon bah écoute au moins ça marche, je te remercie.
Je laisse tomber le select du datatable, je me prendrai la tête avec une autre fois !
Merci
Elo
0
Rejoignez-nous