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 :

Accéder aux colonnes d'un GridView rempli par code


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 73
    Points : 59
    Points
    59
    Par défaut Accéder aux colonnes d'un GridView rempli par code
    Bonjour à tous,

    sur ma page panier, j' ai un GridView que je remplis grâce à une classe "commande" qui contient une liste des lignes de commande.

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        protected void Page_Load(object sender, EventArgs e)
        {
            Commande c = (Commande)Session["Commande"];
     
            var l = from x in c.Lignes
                    select new { x.IdArticle, x.NomArticle, x.QteCommande, x.Prix };
            gridPanier.DataSource = l.ToList();
            gridPanier.DataBind();
     
            Label1.Text = gridPanier.Columns.Count.ToString();
        }
    je voudrai accéder aux différentes colonnes par code du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            gridPanier.Columns[2].Visible = false;
    mais cela ne fonctionne pas ... pourtant le grid est bien rempli (4 colonnes et x lignes)

    En utilisant linq ou en associant directement c.Lignes.ToList() au DataSource du grid ne change rien ...

    Avec le debug pas à pas, je vois bien les 4 colonnes présentes dans le grid, seulement elles sont "invisibles" au gridPanier.Columns.Count().

    y a t'il moyen d'accéder à ces colonnes via le code?

    merci pour votre aide.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Quand est-ce que tu fais appel à gridPanier.Columns[2].Visible = false; ?

    [EDIT] : autre question, est-ce que tes colonnes sont générées automatiquement ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 73
    Points : 59
    Points
    59
    Par défaut
    Bonjour DotNetMatt
    Quand est-ce que tu fais appel à gridPanier.Columns[2].Visible = false; ?
    Dans le load, à la place de la ligne count par exemple (apres le binding bien sur)

    est-ce que tes colonnes sont générées automatiquement ?
    je suppose que oui car la génération de la page affiche bien un tableau avec les données que je veux.

    Actuellement j'ai "contourné" le problème en créant manuellement des colonnes dans mon grid (page xaml) comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        <asp:GridView ID="gridPanier" runat="server" OnRowDeleting="gridPanier_RowDeleting" OnRowEditing="gridPanier_RowEditing">
            <Columns>
                <asp:BoundField DataField="IdArticle" HeaderText="Référence"/>
                <asp:BoundField DataField="NomArticle" HeaderText="Libellé produit"/>
                <asp:BoundField DataField="QteCommande" HeaderText="Quantité"/>
                <asp:BoundField DataField="Prix" HeaderText="Prix"/>
                <asp:CommandField ButtonType="Button" ShowDeleteButton="True" ShowEditButton="True" />
            </Columns>
        </asp:GridView>
    et cela fonctionne.

    Je dis "contourner" mais c'est peut être la solution... car au cours de ma formation afpa j'ai toujours associé mes grid à des EntityDataModel ou à des DataSet mais en mode graphique et à ce moment la les colonnes se créent en dur (visibles dans le code xaml), jamais par code.

    et dans mon cas, il est vrai que le grid était vide sur la page xaml

    si tu peux confirmer ma pensée ou m'expliquer comment y accéder sans les créer en dur je serais ravi

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par lamouche42 Voir le message
    Dans le load, à la place de la ligne count par exemple (apres le binding bien sur)
    Ok, ça c'est bon, je voulais juste m'assurer que tu le fasses bien après le binding.

    Citation Envoyé par lamouche42 Voir le message
    Je dis "contourner" mais c'est peut être la solution... car au cours de ma formation afpa j'ai toujours associé mes grid à des EntityDataModel ou à des DataSet mais en mode graphique et à ce moment la les colonnes se créent en dur (visibles dans le code xaml), jamais par code.

    et dans mon cas, il est vrai que le grid était vide sur la page xaml

    si tu peux confirmer ma penser ou m'expliquer comment y accéder sans les créer en dur je serais ravi
    Première précision, il ne s'agit pas de XAML, mais de code HTML ou d'ASP.NET à proprement parler. Le XAML est utilisé en Silverlight / WPF, il ne faut pas mélanger les deux

    Ensuite il faut savoir que ton "contournement" est dû à deux comportements du GridView.

    Si tu spécifies tes colonnes dans le code HTML de ta page, alors tu peux utiliser gridPanier.Columns[2].Visible = false;.

    En revanche, si tu utilises les colonnes autogénérées, alors il faut parcourir le GridView ligne par ligne afin de masquer la colonne désirée :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    gridPanier.HeaderRow.Cells[2].Visible = false;
    foreach (var row in gridPanier.Rows)
    {
        row.Cells[2].Visible = false;
    }
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 73
    Points : 59
    Points
    59
    Par défaut
    Merci beaucoup pour tes précisions précises
    en effet j'ai confondu xaml et asp.net ... association idiote mais ayant fait un petit peu de WPF j'ai automatiquement associé les 2 "langages" qui se ressemblent...

    Pour le grid, j'ai bien compris la différence entre les deux solutions et la deuxième est logique quand on y réfléchit bien ... mais dans mon cas actuel la première est la plus adaptée

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 28/05/2014, 14h45
  2. Réponses: 4
    Dernier message: 14/02/2014, 14h43
  3. Réponses: 4
    Dernier message: 13/07/2010, 12h20
  4. Réponses: 11
    Dernier message: 15/06/2007, 17h43
  5. accéder aux colonnes d'une table différemment
    Par fab_hendrix dans le forum Langage SQL
    Réponses: 3
    Dernier message: 06/08/2005, 19h20

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