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 :

Problème d'affichage de grid view


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut Problème d'affichage de grid view
    Bonjour,
    je voudrais lister la consommation d'un client par heure et par produit puis faire le total(vous trouvez une pièce jointe décrivant le résultat à lequel je veux aboutir)

    c'est pour ça j'ai construit deux classes
    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
     
    public class PlaceIdentifiant
    {
           int _id;
    	public int Id
    	{
    		get { return _id; }
    		set { _id = value; }
    	}
    	string _Produit;
     
            public string Produit
    	{
    	        get { return _Produit; }
    	        set { _Produit = value; }
    	}
    	List<ProduitHeure> _ListProduitPris = new List<ProduitHeure>();
     
            public List<ProduitHeure> ListProduitPris
    	{
    	        get { return _ListProduitPris; }
    		set { _ListProduitPris = value; }
            }
    }
    public class ProduitHeure
    {
             int _NbreProduit;
     
            public int NbreProduit
            {
                get { return _NbreProduit; }
                set { _NbreProduit = value; }
            }
     
             string _Heure;
     
            public string Heure
            {
                get { return _Heure; }
                set { _Heure = value; }
            }
    }
    En voulant afficher le résultat dans un GridView, j'ai crée une liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<PlaceIdentifiant> _ListProduitPrisIdent = new List<PlaceIdentifiant>();
    Aprés avoir remplis cette liste(je le vois en mode debug), j'ai voulu faire l'affichage dans un GridView.Voici mon code c#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gvHistoCarte.DataSource = _ListProduitPrisIdent ;
                gvHistoCarte.DataBind();
    et pour le code 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
    <asp:GridView ID="gvHisto" runat="server" AllowPaging="true" AllowSorting="true" AutoGenerateColumns="false">
     
    <Columns>
                <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Label ID="lblidentifiant" runat="server" Text='<%#Bind("Id") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                   <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Label ID="lblProduit" runat="server" Text='<%#Bind("Produit") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
     
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Label ID="listplace" runat="server" Text='<%#Bind("ListProduitPris") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
    </Columns>
    </asp:GridView>
    mais à l'affichage je ne vois que l'id et le produit. Le nombre de produit acheté à telle heure ne s'affiche pas je ne sais pas pourquoi
    En fait il m'affiche
    System.Collections.Generic.List[ProduitHeure]
    à la place de ce que j'ai attendu sachant que je voulu mettre le titre de la colonne la valeur de l'attribut heure et le contenu la valeur de l'attribut NbreProduit de la classe ProduitHeure. Vous trouvez ci-joint le résultat que je cherche à afficher.

    J'espère que j'étais clair et que vous pouvez m'aider.Si vous aurez besoin de plus précisions dites moi.

    Merci
    Images attachées Images attachées  

  2. #2
    Membre habitué Avatar de lou-03
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 156
    Points : 153
    Points
    153
    Par défaut
    Bonjour,

    Ton erreur est normale.
    La liste que tu passes à ton GridView contient elle-même une liste :
    dans ta _ListProduitPrisIdent pour chaque PlaceIdentifiant tu as
    • un id : int
    • un produit : string
    • une liste : List<ProduitHeure>


    La GridView ne lit pas ta List et donc affiche son type, d'où le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Collections.Generic.List[ProduitHeure]
    Voici la solution (trouvée sur ce site):
    Dans ton code aspx, il faut changer ton asp:Label listplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:Label ID="listplace" runat="server" Text='' OnDataBinding="listplace_DataBinding"></asp:Label>
    Dans le code .cs de ta page aspx ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    protected void listplace_DataBinding(object sender, System.EventArgs e)
            {
                Label lbl = (Label)sender;
                lbl.Text = ((List<ProduitHeure>)(Eval("ListProduitPris")))[0].NbreProduit;
            }
    Fait de même pour l'heure d'un ProduitHeure.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    Merci lou-03 tu m'as aidé pour avancer mais je suis tombé sur un autre problème. En fait quand t'as écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((List<ProduitHeure>)(Eval("ListProduitPris")))[0].NbreProduit
    Je récupère juste le premier élément de la liste, pour que je puisse lire tous les éléments j'ai changé le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    protected void listplace_Databinding(object sender, EventArgs e)
            {
                int i;
                Label lbl = (Label)sender;
                int j = ((List<ProduitHeure>)(Eval("ListProduitPris"))).Count;
                for (i = 0; i < j; i++)
                {
                    lbl.Text = ((List<ProduitHeure>)(Eval("ListProduitPris")))[i].NbrePlace.ToString();
                }
     
            }
    Mais comme je n'ai qu'une seule colonne c'est pour ça la valeur affiché va être celle du dernier élément de la liste(Pour chaque client) et du coup je me pose la question comment je peux avoir autant de colonne que d'heure de prise de produit(la quantité= quantité(heure), le header de la colonne c'est la propriété heure de la liste ProduitHeure et le contenu c'est la propriété NbreProduit).Voici en pièce jointe que je cherche à avoir.

    Merci pour votre aide.
    Images attachées Images attachées  

  4. #4
    Membre actif Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Points : 284
    Points
    284

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    Merci g_tarik0010 ca ne m'aide pas trop. J'ai changé mon code source et je l'ai remplacé par
    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
     
    protected void listplace_Databinding(object sender, EventArgs e)
            {
                int i;
                Label lbl = (Label)sender;
                int j = ((List<ProduitHeure>)(Eval("ListProduitPris"))).Count;
                for (i = 0; i < j; i++)
                {
                    lbl.Text = ((List<ProduitHeure>)(Eval("ListProduitPris")))[i].NbrePlace.ToString();
     
                    //Rajouter colonne pour la quantité acheté à une heure donnée
                    BoundField maColonne = new BoundField();
                    maColonne.HeaderText = ((List<ProduitHeure>)(Eval("ListProduitPris")))[i].Heure;
                    maColonne.DataField = ((List<ProduitHeure>)(Eval("ListProduitPris")))[i].NbrePlace.ToString();
                    gvHistoCarte.Columns.Add(maColonne);
                }
     
            }
    Mais dans l'affichage les colonnes rajoutées n’apparaissent pas je ne comprends pas

  6. #6
    Membre habitué Avatar de lou-03
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 156
    Points : 153
    Points
    153
    Par défaut
    Salut,

    Désolé, je n'avais pas fait attention qu'il te fallait des colonnes dynamiques.
    Je pense qu'il faudrait un DataBind() à la fin mais j'ai essayé et de mon côté il tourne en boucle...
    La solution donnée par g_tarik0010 fonctionne mais ici comme le gridview est déjà généré avant qu'il passe dans listplace_Databinding, il y a une erreur.

    Si j'ai une piste je te tiens au courant.
    Bon courage

  7. #7
    Membre actif Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Points : 284
    Points
    284
    Par défaut
    Si tu regarde le code dans le liens ce qu'il fait c'est qu'il génère toutes les colonnes a mano, chose que tu fait pas,
    cependant si tu veux pas le faire je te propose
    LINQ PIVOT 1
    Ou LINQ PIVOT 2
    Ou LINQ PIVOT 3

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    Merci beaucoup g_tarik0010 tu m'as guidé au bon chemin . Je cite un lien http://redsouljaz.wordpress.com/2009...om-data-table/ décrivant bien la solution.

    Je vous souhaite une bonne journée.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/10/2014, 00h44
  2. Problème d'affichage de grid en c# (wpf)
    Par filiplarlibe dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 20/09/2010, 13h52
  3. problème d'affichage dans un grid
    Par ouaqa dans le forum Flex
    Réponses: 1
    Dernier message: 20/05/2010, 09h49
  4. Problème de selection dans grid view
    Par sky88 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 12/11/2009, 18h13
  5. affichage des collone d'un grid view
    Par Zachs dans le forum VB.NET
    Réponses: 7
    Dernier message: 30/04/2008, 14h40

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