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

ASP.NET Discussion :

Gridview, regroupement de lignes


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Points : 94
    Points
    94
    Par défaut Gridview, regroupement de lignes
    Bonjour,

    Je débute avec ASP.NET C# et j'ai un problème pour remplir un gridview qui est lié avec un sqldatasource sur lequel j'applique une requête sur plusieurs tables qui me retourne des champs que j'aimerai concaténer dans une colonne :

    La requête me retourne par exemple et pour simplifier :

    ID | Voiture | Couleur disponible
    5 | Fiat | blanche
    5 | Fiat | rouge
    7 | BMW | rouge
    2 | Peugot | bleu
    2 | Peugot | Rouge

    Mais j'aimerai sans modifier par la requête SQL, regrouper en travaillant sur mes champs du gridview pour arriver à :

    5 | Fiat | blanche,rouge
    7 | BMW | rouge
    2 | Peugot | blue,rouge

    J'ai tenté avec l'événement onrowdatabound, je ne peux que boucler sur le row en cours et les précédents. J'ai tenter d'accèder directement au données de mon gridview une fois la commande SelectCommand affecté, apparement je peux travailler sur les lignes et colonne, mais c'est sans effet sur le résultat dans le gridview après.

    Merci d'avance si vous avez une proposition ou si je me trompre de route.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Points : 633
    Points
    633
    Par défaut
    Je ne sais pas trop s'il y a moyen de faire ca à partir de la GridView, ce que je fais donc c'est soit dans mon select de ma stored proc je construits la champs directement, soit une methode public dans le code behind qui me retourne un string construit (ou autre), que j'appelle dans un itemTemplate, pour un Label.

    Fix

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 646
    Points
    1 646
    Par défaut
    Soit effectuivement tu le fais directement dans le requete soit comme le propose fix105 tu le fais dans l'evenement databinding de ton gridview.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Points : 94
    Points
    94
    Par défaut
    Bonjour Merci pour vos réponses.

    Mais y'a-t'il l'événement onDataBinding sur un GirdView ? Je n'ai pas réusis à l'implémenter !

    Pour préciser, j'ai dans ma page un GirdView et un SQLDatasource, je créer ma requête SQL dans mon code behind et l'affect à mon SQLdatasource, puis sur mon GridView. Es-ce bien correcte ? Ou devrais-je passer par une autre méthode.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 646
    Points
    1 646
    Par défaut
    databinding ondatabinding c'est pareil!
    ca n'etait pas plus simple de passer par un assistant?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Points : 633
    Points
    633
    Par défaut
    c'est alors plutot OnDataBound, pour le faire avant d'afficher la GridView

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 646
    Points
    1 646
    Par défaut
    ondatabound c'est après l'affichage il me semble.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Points : 94
    Points
    94
    Par défaut
    Alors sur le OnDataBonding, j'accède bien à mon gridView et je peux nivaguer dans les row, par contre je n'arrive pas à changer quoique ce soit dans les données. C'est le meme résultat que lorsque je travail sur mon gridview après avoir fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            DSVerdict.SelectCommand = SQLSelect;
            GridViewVerdict.DataKeyNames = DatakeyName;
    Et voici par exemple comment j'accède à mon gridview pour reprendre mes données et les concatainner dans un label pour test, pas d'erreur, mais rien dans mon label :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            for (int index=0; index < GridViewVerdict.Rows.Count; index++)
            {
                LabelTest.Text += GridViewVerdict.Rows[index].Cells[2].Text;
            }

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 646
    Points
    1 646
    Par défaut
    ce que tu viens de faire mets le dans le databound ca devrait mieux le faire je pense.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Points : 633
    Points
    633
    Par défaut
    oui c'est donc ce que j'avais dit avant, faut croire que je suis un fantome

    Fix

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 646
    Points
    1 646
    Par défaut
    dans le ondatabinding c'etait pour changer la datasource. mais vu qu'il veut faire le truc directement sur le gridview le databound est mieux. bref tu n'es pas un fantome ;-)

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Points : 633
    Points
    633
    Par défaut
    mouai désolé, je rigolais, c'etait une dure journée au boulot, je n'irai plus sur le forum pendant des journées aussi pénible

  13. #13
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Même problème - itemtemplate
    Bonjour, alors en fait je travail avec cchevalier72 et je reprend ce qu'il a déjà commencé mais sur une autre voie, celle du templatefield.
    ça fait toute la matinée que je cherche et là je suis à bout...

    J'ai créer mon TemplateField
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    TemplateField ChampCommune = new TemplateField();
    ChampCommune.HeaderText = "Commune";
    ChampCommune.ItemTemplate = new TemplateLabel("text", "Label1");
    GridViewRechercheDossier.Columns.Insert(GridViewRechercheDossier.Columns.Count, ChampCommune);
    A l'aide de ma class TemplateLabel :
    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
     
    public class TemplateLabel : ITemplate
        {
            string Text;
            string Id;
            public TemplateLabel(string vText, string vId)
            {
                Text = vText;
                Id = vId;
            }
            //methode appelée lors de l'implementation de la colonne template
            public void InstantiateIn(Control container)
            {
                Control ctrl = null;
                ctrl = new Label();
                ((Label)ctrl).Text = Text;
                ((Label)ctrl).ID = Id;
                container.Controls.Add(ctrl);
            } 
        }
    J'aimerai remplir le label avec des données pour chaque ligne de mon gridview exactement comme cchevalier72 et là je suis perdu...

    quelqu'un peut-il m'indiquer le chemin à prendre ?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Points : 633
    Points
    633
    Par défaut
    tout doit être dynamique ?

  15. #15
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    oui, mais... dsl en fait j'ai abandonné cette solution, elle ne me parait pas adaptée....

    J'utilise maintenant l'évènement Rowdatabound qui se produit lorsqu'une ligne de données est liée aux données dans un contrôle gridview.
    Et là, j'arrive à accéder à la clé primaire de la ligne en cours et je n'aurai plus qu'a remplir mon champ avec un requête !! ouf j'ai transpiré tout l'après-midi !
    Merci pour tout les gars ! a+

    voici pour ceux que ça pourrai aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        protected void GridViewRechercheDossier_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            System.Data.DataRowView drv;
            drv = (System.Data.DataRowView)e.Row.DataItem;
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (drv != null)
                {
                    e.Row.Cells[2].Text = GridViewRechercheDossier.DataKeys[e.Row.RowIndex].Value.ToString();
                }
            }
        }

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Points : 633
    Points
    633
    Par défaut
    tchu c'a été dur, je pense qu'on l'avait signalé dés la troisième réponse, vous n'êtes pas trois dans votre équipe au moins (joke)


    Fix

    Ps : Tag Résolu

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Points : 94
    Points
    94
    Par défaut
    Voilà, me voici de retour de vac, merci a vous tous pour nous avoir aidé avec ce problème. MasterFunk à finalisé !

    Super ! Merci !

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

Discussions similaires

  1. Gridview : recherche de ligne et pagination
    Par gefcookie dans le forum ASP.NET
    Réponses: 4
    Dernier message: 10/04/2007, 18h24
  2. Regrouper des lignes
    Par xenos dans le forum Excel
    Réponses: 2
    Dernier message: 12/03/2007, 16h49
  3. Réponses: 8
    Dernier message: 02/03/2007, 16h37
  4. Regroupement de lignes
    Par 78alex78 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/01/2007, 14h55
  5. [vbexcel]tri ou regroupement de ligne en fonction de valeur.
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/12/2005, 18h22

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