[C#] Tri Multi-colonnes dans une DataGridView

Signaler
Messages postés
5
Date d'inscription
jeudi 7 avril 2005
Statut
Membre
Dernière intervention
19 juin 2009
-
Messages postés
5
Date d'inscription
lundi 25 juillet 2005
Statut
Membre
Dernière intervention
26 juillet 2005
-
Bonjour,
j'ai une datagridview avec disons 3 colonnes "Nom", "Prénom" ,"Civilité"
lorsque je clique sur une colonne, elle se trie automatiquement...normal

j'aimerai pouvoir lorsque je clique sur "Civilité" par exemple, pouvoir trier ma datagrid sur Civilite+Nom+Prénom

Quelqu'un aurait une idée?
Merci

PS En C# s'iou plait, sinon, pas grave je m'adaptereai

6 réponses

Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
Tu es sur un forum c#, on va pas te répondre en vb.
alors, je ne pense pas qu'il y ai de solution toute faite comme ca.

Alors, il doit y avoir un événement sur la datagrid lorsque l'utilisateur clique sur l'entete de colonne , je connais pas le nom.
Si tu as trois colonnes et que tu les connais, tu peux faire un truc du style :

1. tu lies ta datagrid à une vue sur ta table (dataview)
2. Lors de l'interception du clic sur l'entete ( ou de la propriété sort, je sais pas), tu configure la proopriété sort de ta vue. Cela aura normalement l'effet escompté

bon, je te donne un bout de code qui fait tout ca sur l'événement mouseDown, tu verifiera la case parce que moi pas doué en ponstuation
//evenement mouse down
public void dtg_MouseDown( sender e, mouveEventArgs e)
{
Point pt = new Point(e.X,e.Y);
DataGrid.HitTestInfo hti = dtg.HitTest(pt);
swtich (hti.Column)
{
case 0 :
maVue.Sort =" Civi ASC, Nom ASC,Prenom ASC";
//tri sur la premeire colonne
break;
.......

}

}
Messages postés
5
Date d'inscription
jeudi 7 avril 2005
Statut
Membre
Dernière intervention
19 juin 2009

Merci pour ta réponse.

J'ai un peu de mal à comprendre, cependant (je suis assez novice en c#)



ma datagridview n'est pas liée à une base de donnée, je la renseigne par programmation

J'ai ajouté un composant "dataview" sur ma form contenant la datagrid.

dans les proprietés, il me demande d'indiquer "the table this dataview
uses to get data". Hors il n'y a que "none" à selectionner.



Quel est le principe de fonctionnement d'une dataview ? et comment la liér à ma datagridview ?



Merci d'avant encore pour ces précisions.
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
moi pas comprendre ce que toi me raconter.


non, sérieusement , ba heu, moi pas trop bien connaitre datagridview.


Pour moi le schéma c'est, une dataTable que tu remplis. ( cette datatable est éventuellement dans un dataset)
après , si tu veux mettre en place ce que je te disais, tu crées un vue sur cette datatable
Dataview mavue = new Dataview ( madatatable, ""," Civi ASC",dataviewrawstate.currentrows);

et tu lie à ta datagrid :
madatagrid.Datasource = mavue;

voili voilou, apres, je sais pas ce que tu utilises, mais c'est tout ce que je peux te raconter
Messages postés
5
Date d'inscription
lundi 25 juillet 2005
Statut
Membre
Dernière intervention
26 juillet 2005

visual studio permet de faire des choses tres simplement pour les données.

methode la plus généraliste et conviviale

1/ ajout d'un dataset au projet

2/ à partir de l'onglet ou il y a ton server de base, tu fait glisser sur ton dataset les tables que tu veut integrer

3/ sur ta form, à partir du meme onglet, tu fait glisser ton serveur sur la form pour avoir ta connexion

4/ sur ta form, tu fait glisser ta table pour avoir le dataadapter

5/ tu ajoute un dataset à ta form en choisisant le dataset de ton projet comme reference

6/ tu ajoute une dataview à ta form

7/ tu asigne dataset.table dans la propriete table de ta dataview

8/ tu assigne ta dataview comme datasource de ta datagrid

9/ pour charger la base : dataadapter.fill(dataset)



pour le suite de la gestion de l'ADO.NET vat voir un tuto
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
vi, vi, vs permet de faire pleinde truc automatique sans écrire une ligne de code, c'est bien pratique

enfin, on va relativiser tout ca quand meme. Ca c'est bien valable pour un petit projet, apres , sur un gros projet, il faut un peu plus de structuration, et tout mettre sur la form, pour moi, c'est merdique, donc , merci microsoft, tous ces beaux gadgets font des belles démos, mais pas forcémenet des beaux projets, bien débugables. Mais bon, c'est vrai qu'un proejt d'interrogation de bdd sans réellement regle de controle de données est réalisé tres tres rapidement grace à ca.

malgrè ca, j'aim bien vs.net hein, on va pas cracher dans la soupe.
Messages postés
5
Date d'inscription
lundi 25 juillet 2005
Statut
Membre
Dernière intervention
26 juillet 2005

je suis d'accord avec toi et c'est bien pour ça que je suis en train de faire une librairy pour parametrer une application developpée comme ci dessus.
ex : pour le controle des intégrité, traitement automatique par rapport aux PK et FK et UK du dataset.
d'autres possibilté comme la gestion du multi-lignes(presque fini), le lien "maitre_detail", les "look_up", les "LOV", (dsl je viens du monde ORACLE) seront developpés.