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 :

comment trier les colonnes de mon datagrid


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut comment trier les colonnes de mon datagrid
    Salut a tous !
    j'ai besoin de vous pour m'expliquer comment je peux trier les colonnes de mon datagrid en cliquant sur l'entete de la colonne sa serais super sympa de voter part !

    Bizzz

    PS : application web asp.net C#.

  2. #2
    Membre actif Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Points : 247
    Points
    247
    Par défaut
    j'aimerais aussi savoir comment faire . J'avais déjà chercher et rien trouver je mettais rabattu en le faisant manuellement dans le DataSet

  3. #3
    Membre actif
    Inscrit en
    Janvier 2005
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 218
    Points : 247
    Points
    247
    Par défaut
    Déjà, il faut mettre la proprieté du DataGrid : AllowSorting à true

    Une fois le tri activé, la grille rend les contrôles LinkButton dans l'en-tête de chaque colonne. Si vous cliquez sur le bouton, l'événement SortCommand de la grille est levé. C'est à vous de traiter cet événement dans votre code. Comme DataGrid affiche toujours les données dans l'ordre d'apparition dans la source de données, la logique classique trie la source de données, puis lie à nouveau les données à la grille

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    En complément, pour faire un tri sur plusieurs colonnes on peut modifier la property Sortstr du BindingSource du Datagriview:
    MyDataGridView.BindingSource.SortStr="NOM ASC,PRENOM ASC,AGE DESC"

  5. #5
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut
    salut
    Deja UN GRAND merci pour vos reponses.

    DOnc si j'ai bien compris je resume un peu tous je dois avoir du code qui ressemble a sa ? :
    dans ma page asp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <asp:datagrid id=dgObjet runat="server" width="100%" 
    horizontalalign="Center" autogeneratecolumns="False" cellpadding="3" 
    gridlines="Horizontal" itemstyle-height="30" allowpaging="True" allowsorting="True">
    dans mon code behind :


    je ne comprend pas comment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Si vous cliquez sur le bouton, l'événement SortCommand de la grille est levé. 
    C'est à vous de traiter cet événement dans votre code. 
    Comme DataGrid affiche toujours les données dans l'ordre d'apparition dans la source de données, 
    la logique classique trie la source de données, 
    puis lie à nouveau les données à la grille
    traduire ceci en ligne de code et a quoi cela correspon exactement.

    Dite vous auriez un exemple sur quoi me basé ????

    MERCI A VOUS !!!

  6. #6
    Membre habitué Avatar de mr.net
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 152
    Points : 150
    Points
    150
    Par défaut Salut
    'essai ce bout de code dans l'evenement gridview_sorting()



    Protected Sub GridView_Sorting

    dataset.Tables("nomTable").DefaultView.Sort = e.SortExpression
    GridView.DataSource = dataset.Tables("nomTable").DefaultView
    GridView.DataBind()
    End sub

    Si ca pour t'aide a plus

  7. #7
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut
    nannnnn sa m'aide pas !!!
    quelqun peut m'aider ?????

  8. #8
    Membre habitué Avatar de mr.net
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 152
    Points : 150
    Points
    150
    Par défaut ok
    reprend exactement ton blem
    tu veu trier un gridview?
    en c #

  9. #9
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut
    je te passe mon code et tu me dis si je peux faire ce que tu me propose :

    voici comment je charge mon datagrid :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    private void Page_Load(object sender, System.EventArgs e) {
                // Put user code to initialize the page here
     
    			string ligne = "" ; 
    			string SortField= "";
     
    			DataTable Dt = new DataTable();
     
    			// Ajout des entêtes de colonnes a mon DataTable.
    			Dt.Columns.Add(new DataColumn("id",typeof (string)));
    			Dt.Columns.Add(new DataColumn("Macro",typeof (string)));
    			Dt.Columns.Add(new DataColumn("Lib",typeof (string)));
    			Dt.Columns.Add(new DataColumn("FR",typeof (string)));
    			Dt.Columns.Add(new DataColumn("A",typeof (string)));
    			Dt.Columns.Add(new DataColumn("CH",typeof (string)));
    			Dt.Columns.Add(new DataColumn("ST",typeof (string)));
    			Dt.Columns.Add(new DataColumn("O",typeof (string)));
    			Dt.Columns.Add(new DataColumn("M",typeof (string)));
     
     
    			ArrayList listeLigne = new ArrayList() ;
    			//Lecture de mon fichier
     
    			StreamReader sr=File.OpenText(@"C:\SI4MACRO.dat") ;
     
    			/* --- Chaque ligne de mon fichier est stocké dans un tableau d'une colonne "listeLigne" */
    			while ((ligne = sr.ReadLine()) != null)
    			{
    				if (ligne != null && ligne != string.Empty) 
    				{
    					string [] listeChaine = ligne.Split('\t') ;
    					listeLigne.Add(listeChaine) ;
     
    				}
    			}
    			/* --- Je partage ma ligne en mot et je stocke ceci dans un tableau de ligne 
    			   --- et de colonne correspondant au mot de chaque ligne */
    			foreach (string[] tablo in listeLigne)  
    			{
    				DataRow Dr = Dt.NewRow();
    				Dr[1] = tablo[6];
    				Dr[2] = tablo[7];
    				Dr[3] = tablo[5];
    				Dr[4] = tablo[4];
    				Dr[5] = tablo[0];
    				Dr[6] = tablo[1];
    				Dr[7] = tablo[3];
    				Dr[8] = tablo[2];
     
    				Dt.Rows.Add(Dr);
    			}
     
    			DataView Dv = new DataView(Dt);
     
    			dgObjet.DataSource = Dv;
    			dgObjet.DataBind();
     
           }

    voici ma page asp
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <asp:datagrid id=dgObjet runat="server" width="100%" horizontalalign="Center" autogeneratecolumns="False" cellpadding="3" gridlines="Horizontal" itemstyle-height="30" allowpaging="True" allowsorting="True">
    					<alternatingitemstyle wrap="False" cssclass="Tableau_content_alternate">
    					</AlternatingItemStyle>
     
    					<itemstyle wrap="False" height="30px" cssclass="Tableau_content">
    					</ItemStyle>
     
    					<headerstyle cssclass="Tableau_top">
    					</HeaderStyle>
     
    					<columns>
    					<asp:templatecolumn sortexpression="macro" headertext="Macro">
    					<itemtemplate>
    						<asp:linkbutton id="macro" runat="server" onclick="macro_Click" commandargument='<%# DataBinder.Eval(Container.DataItem, "macro") %>'>
    								<%# DataBinder.Eval(Container.DataItem, "macro") %>
    						</asp:linkbutton>
    					</ItemTemplate>
    					</asp:templatecolumn>
    						<asp:boundcolumn datafield="lib" sortexpression="lib" headertext="Libéllé"></asp:boundcolumn>
    						<asp:boundcolumn datafield="Fr" sortexpression="Fr" headertext="Fréquence"></asp:boundcolumn>
    						<asp:boundcolumn datafield="A" sortexpression="A" headertext="Action"></asp:boundcolumn>
    						<asp:boundcolumn datafield="CH" sortexpression="CH" headertext="Numéro de la chaine"></asp:boundcolumn>
    						<asp:boundcolumn datafield="ST" sortexpression="ST" headertext="Step"></asp:boundcolumn>
    						<asp:boundcolumn datafield="O" sortexpression="O" headertext="Odre"></asp:boundcolumn>
    						<asp:boundcolumn datafield="M" sortexpression="M" headertext="Machine"></asp:boundcolumn>
    					</Columns>
     
    					<pagerstyle cssclass="Tableau_top" mode="NumericPages"></PagerStyle>
    				</asp:datagrid>

    en mettant AllowShorting sa me mets mes entete de colonne cliquable et jaimerais quang je clik dessus que sa me tri mes colonne apr ordre alphabétique.

    je ne sais pas coder cet evenement !

  10. #10
    Membre actif
    Inscrit en
    Janvier 2005
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 218
    Points : 247
    Points
    247
    Par défaut
    Déjà, tu commences par remplir ton DataGrid dans le Page_Load...il faut rajouter !IsPostBack sinon, il va repasser dedans à chaque fois...

    Il faut maintenant déclarer un evenement Sorting sur ta DataGrid et comme l'a dit Mr Net il faut y inscrire celà :

    Protected Sub GridView_Sorting

    dataset.Tables("nomTable").DefaultView.Sort = e.SortExpression
    GridView.DataSource = dataset.Tables("nomTable").DefaultView
    GridView.DataBind()
    End sub

  11. #11
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut
    comme je débute en c# c'est jsutement la syntaxe qui me manqué lol !!!!!!!!
    mais c'est gentil de m'aider !!
    tu pense qu"il ya boucou de différence en c# ????

  12. #12
    Membre habitué Avatar de mr.net
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 152
    Points : 150
    Points
    150
    Par défaut
    essai cela
    copy et cole dan le code behind

    protected void dgObjet _Sorting(Object sender, datagridSortEventArgs e)
    {
    Dv.Sort=e.SortExpression;
    dgObjet .DataSource = Dv.DefaultView;
    dgObjet .DataBind();

    }

  13. #13
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut
    il me dis " Dv could not befound ??????"

  14. #14
    Membre actif
    Inscrit en
    Janvier 2005
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 218
    Points : 247
    Points
    247
    Par défaut
    Normal, ton DV est non declaré dans ta méthode...

    Essaye de la déclarer en méthode variable

  15. #15
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut
    mais il va savoir qu'il correspond au Dataview de mon Page Load ???
    je teste .??

  16. #16
    Membre habitué Avatar de mr.net
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 152
    Points : 150
    Points
    150
    Par défaut
    oups!!!!
    refait plutot ca

    dans la class

    DataTable Dt = new DataTable();

    DataView Dv = new DataView();

    dans ton code tu ne fera que:

    Dv.Table=Dt;



    ca doit aller

  17. #17
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut
    il me marque l'ereur suivante que mon " Dv does not contain a définition for defaultView"

  18. #18
    Membre habitué Avatar de mr.net
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 152
    Points : 150
    Points
    150
    Par défaut
    oups il nya pas Dv.defaultview // eleve le et recolle ca

    dv.Sort=e.SortExpression;
    dgObjet.DataSource = dv;
    dgObjet.DataBind();

  19. #19
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut
    désoler de deander encore mais la il me fait une autre faute
    le code que tu ma donner ne bug pas mais quand je lance l'apllication il boque qur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dv.Sort=e.SortExpression;
    et il me marque la faute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception Details: System.IndexOutOfRangeException: Cannot find column lib.
    car la colonne sur laquel j'ai cliquer s'appelle marco :voici comment je l'ai declarer dans ma page aspx!
    [CODE]<asp:boundcolumn datafield="lib" sortexpression="lib" headertext="Lib&#233;ll&#233;"></asp:boundcolumn>[CODE]

  20. #20
    Membre habitué Avatar de mr.net
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 152
    Points : 150
    Points
    150
    Par défaut
    BOn je pense ke ta trouve
    clik sur aure colone pour tester pour voir

    je pense ke macro cest ton linkbouton si jai bien lu ton code

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/08/2011, 10h13
  2. Réponses: 6
    Dernier message: 08/07/2011, 16h22
  3. Trier les colonnes d'un datagrid
    Par Claire07 dans le forum ASP.NET
    Réponses: 9
    Dernier message: 13/06/2007, 15h30
  4. [C#] comment lier les ascenseurs de deux datagrids ??
    Par mbibim63 dans le forum Windows Forms
    Réponses: 18
    Dernier message: 06/06/2005, 15h14

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