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 :

[C#] Comment cacher une colonne d'un GridView ?


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 273
    Points : 118
    Points
    118
    Par défaut [C#] Comment cacher une colonne d'un GridView ?
    Bonjour à tous,

    j'aimerais masquer une colonne de mon gridview sachant que celui-ci est rempli par un dataset donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MonGridView.DataSource = MonDataSet;
    MonGridView.DataBind()
    Lorsque je veux accèder à une colonne comme par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonGridView.Columns[0].Visible = false;
    j'ai une exception me disant que
    IndexIsOutOfRange
    pk est ce que je ne peux accèder à ma colonne en elle-même alors que lorsque j'accède à une cellule de cette colonne en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonGridView.Rows[i].Cells[0]
    il accède correctement à la valeur et je n'ai donc aucune exception

    Une idée?

    Merci

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    pourquoi tu ne spécifie pas plutot au niveau de la page aspx les colonnes que tu veux afficher ?
    En mode design tu selectionne ton gridview et avec l'assistant du défini les colonnes à afficher ou pas et d'autres propriétés.

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 273
    Points : 118
    Points
    118
    Par défaut
    Le problème est qu en spécifiant a mon gridview que le datasiurce est un dataset, je n ai besoin de créer aucune colonne au préalable ... tout est automatique

  4. #4
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonGridView.Columns[0]
    permet d'accéder aux colonnes que tu auras spécifiées au préalable.
    Comme tu ne le fait pas, tu ne peut pas utiliser cette syntaxe car il n'a pas de colonnes. Si tu faits un MonGridView.Columns.Count tu devrais te retrouver avec 0.

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 273
    Points : 118
    Points
    118
    Par défaut
    ok ca j'ai noté .. mais y a t une solution à ce problème alors? car afficher des ID n'est pas une bonne chose

  6. #6
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    ton dataset fait combien de colonnes ?

  7. #7
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 273
    Points : 118
    Points
    118
    Par défaut
    5 ou 6 colonnes ? pk? si tu veux que je remplisse tout manuellement j'y ai déjà pensé et en suit arrivé a la conclusion que ca fera diminuer fortement les performances ..

  8. #8
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    MonGridView.AutoGenerateColumns = false;
     
    BoundField b = newBoundField();
    b.DataField = "nomColonneDansLeDataSet";
    b.HeaderText = "colonne 1";
    MonGridView.Columns.Add(b);
    
    
    tu retape les 4 dernières lignes autant de fois qu'il y a des colonnes à afficher. En fait tu filtres les colonnes à afficher.

  9. #9
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 273
    Points : 118
    Points
    118
    Par défaut
    Merci pour tout ca marche nickel

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    bonjour,

    Avez-vous une solution pour le cas ou je ne connai pas les colonnes ?
    La seule colonne que je connai est la colonne "id", donc j'ai créé, en mode design, une boundColumn "id" dont le datafield corespond a "id". Donc la il ne devrait plus y avoir ce probleme car je n'est plus qu'a rendre invisible cette nouvelle colonne.
    Le souci, comme je l'ai dit plus haut, c'est que je ne connai pas les colonnes, donc je suis obligé de passer a mon gridview une requete de type "select * from ..." et de mettre autogeneratecolumn à true.
    Bien entendu le resultat est que je me retrouve avec à la fois la boundColumn "id" et avec la colonne "id" de la requete.
    Alors que ce que je veux, c'est ne plus l'avoir cette colonne.
    Avez-vous une solution?

    Merci d'avance

  11. #11
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Points : 336
    Points
    336
    Par défaut
    euh... dans ce cas précis il n'y a pas besoin de cacher la colonne, il faut juste ne pas mettre "l'id" comme étant une colonne mais comme une propriété du GridView.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <asp:GridView EmptyDataText="Aucun Editeurs enregistrés"
    ShowHeader="false" 
    CssClass="gridview" 
    ID="gvEditeur" 
    runat="server" 
    DataSourceID="dsEditeur" 
    AutoGenerateColumns="False" 
    DataKeyNames="IdEditeur" 
    OnRowDeleting="gvEditeur_RowDeleting">

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Je suis d'accord avec vous. Mais ce n'est pas ca mon souci:
    a cause du fait que je soit obligé de mettre autoGenerateColumn a TRUE, je me retrouve avec la colonne en double.
    Bref, c'est la crise.......
    De toute facon, je ne pourrai pas cacher ma colonne car le gridview ne connait que les colonnes qui sont enregistrer à la mano (via le designer par exemple).
    Mais si vous avez une solution, qui contourne ce probleme, je veux bien essayer avec grand plaisir. Je suis meme pret à me diriger vers autre chose que le gridView. D'ailleurs je commence deja avec ces bons vieux tableaux.

    Cordialement

  13. #13
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 126
    Points : 84
    Points
    84
    Par défaut
    bonjour,
    si tu utilise des css pour le designe des pages alors je te propose d'ajouter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .ColonneId
    {
        display : none ;
    }
    aprés si tu veux le masquer à partir du du code de crétion du gridView tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <asp:BoundField DataField="TRIGRAM" HeaderText="Trigram" >
                    <ItemStyle CssClass="ColonneId" />
                    <HeaderStyle CssClass="ColonneId" />
                </asp:BoundField>
    mais il faut convertir ta colonne en Template.

    si tu veux le fair àpartir du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonGridView.Columns[index].ItemStyle.CssClass="ColonneId"
    pour ce dernier cas je ne suis pas sur à toi de tester.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    je n'aime pas la solution du display:none,... :d
    En fait je trouve ca pas tres "réglo", c'est une magouille avec le css. ca peut m'aider dans le sens ou je fais aussi le CSS pour mon site, mais si je suis dans une boite ou je ne m'occupe que du coté dev et que je refile a mon designer une colonne a cacher, il va me dire sdg%%£fdg$$. lol
    Mais ca peut etre une solution en effet.

    cordialement

  15. #15
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Je voudrais pas jouer les déterreur de topic, mais j'ai exactement le même problème côté VB et je ne trouve toujours pas de solution.

    J'ai fait un test sur mon GridView, dans la Page_Laod, j'ai compté le nombre de colonne et il me dit 0, ce qui me parait trés étonnant.

    Avez vous une idée ?

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    arf idem que toi, le gridview c'est la galère pour la custom, c'est grave

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/09/2010, 11h22
  2. Cacher une colonne d'un GridView
    Par zooffy dans le forum ASP.NET
    Réponses: 14
    Dernier message: 26/10/2009, 12h42
  3. Comment cacher une colonne d'un TListView ?
    Par Shredder dans le forum Composants VCL
    Réponses: 15
    Dernier message: 28/10/2007, 19h24
  4. Réponses: 4
    Dernier message: 09/08/2007, 16h04
  5. Réponses: 7
    Dernier message: 25/05/2007, 10h40

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