Mettre une colonne invisible dans un gridview

cuicui6669 Messages postés 8 Date d'inscription lundi 31 décembre 2007 Statut Membre Dernière intervention 1 février 2010 - 30 janv. 2008 à 16:30
cs_Cdelhaye Messages postés 1 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 6 juin 2008 - 6 juin 2008 à 23:27
bonjour,

j'ai fait un gridview que je rempli avec un oleDbDataReader par une requete "select * from ...." . Donc pas de souci, tout se remplit correctement.

Mon probleme, c'est que j'ai un champ "id" dans cette table que je ne veux pas afficher dans mon gridview.

Etant donné que je ne connai pas les colonnes et leur nombre, avez-vous une solution?

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 pour avoir toutes les données.
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

8 réponses

cs_suzukMan Messages postés 58 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 13 septembre 2012 1
30 janv. 2008 à 17:02
Bonjour,

tu peux essayer de virer la colonne qui contien l'ID sa doit être normalement le deuxième colonne (1er c'est le champs caché)
aprés avoir chargé ton gridview tu fait:

gridview1.Columns.RemoveAt(1);
Cordialement
0
cuicui6669 Messages postés 8 Date d'inscription lundi 31 décembre 2007 Statut Membre Dernière intervention 1 février 2010
31 janv. 2008 à 09:29
Bonjour,

Merci de me repondre.
Donc j'ai tenté ta solution, je l'ai testé avant et apres le gridView.databind(), et dans les deux cas je me retrouve avec une erreur "index must be non-negative or less then size of gridview". En gros, il me dit qu'il ne connait pas la colonne que j'essaye de supprimer. eh oui c'est bizarre... surtout quand on sait que malgré tout il me les a affiché jusqu'a maintenant.
Alors est-ce qu'il faut comprendre que le gridView ne connait que les colonnes enregistré à la mano? Celles qui sont affichées "automatiquement", il ne les connait pas?
0
cs_suzukMan Messages postés 58 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 13 septembre 2012 1
31 janv. 2008 à 10:23
Bonjour,
Exact il ne connait que se cqu'on met à la main ....
Comment faire alors?... J'ai vu que sur un gridview tu as les propriété DataKeyNames(Definit ou obtient tableau de string correspondant au champs clé de ton gridview) et aprés ta DataKey la c'est une collection.
Essaye peut être de trouver de l'info la dessus....
A+

Cordialement
0
cuicui6669 Messages postés 8 Date d'inscription lundi 31 décembre 2007 Statut Membre Dernière intervention 1 février 2010
31 janv. 2008 à 11:22
bonjour,

non je ne peux pas utiliser ta solution : pour passer mes colonnes en datakey, il faut que je connaisse mes colonnes, or ce n'est pas le cas...
Sinon, oui c'est un bon moyen de retrouver les noms de colonnes.
Bon de toute facon, je viens de me rendre compte que quand je passe en mode edition et update (en utilisant les evenements qui vont bien ;) ), je ne peux pas meme recuperer les valeurs de mes colonnes générées.
Du coup, ya pas vraiment d'interet, et en plus j'ai perdu beaucoup de temps pour faire marcher un gridview qui n'est pas adapté à mon cas.
Notez que j'ai aussi tenté le datagrid... c'est pas les memes problemes, mais c'est pas adapté non plus.
Donc je vais pouvoir utiliser la bonne vieille méthode du tableau html de mmggniniiidfµ**$£lghdg%¨££ . desesperant.... oiiiiiiiiiiinnnnn

N'ayant plus le temps (rendement oblige :) ), je change donc de solution mais je tacherai de me remettre dans ce cas des que l'occasion s'en presente.

Merci beaucoup d'avoir pris un peu de ton temps pour moi suzukman.

cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_suzukMan Messages postés 58 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 13 septembre 2012 1
31 janv. 2008 à 13:15
Bon j'ai trouver une solution mais je me suis tromper de post !!
Voici la solution
Tu n'a pas accées a tes colonne mais tes lignes donc tu fait

TableCell maCellule;



foreach
(

GridViewRow
maLigne

in
gridview.Rows)



{


maCellule = maLigne.Cells[1];


maLigne.Cells.Remove(maCellule);


}
 l'indice de ta cellule dependant de ou ta collone est placée bien sur
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
31 janv. 2008 à 23:15
Bonsoir,

tu dois pouvoir t'abonner à l'event RowDataBind du gridview pour ensuite mettre cette colonne invisible ou au pire mettre un style="display:none"; Sinon, pourquoi ne pas travailler sur ta source de données ? tu met ton jeux de données dans un DataTable et tu supprime la colonne dans le DataTable puis tu binds.

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
cuicui6669 Messages postés 8 Date d'inscription lundi 31 décembre 2007 Statut Membre Dernière intervention 1 février 2010
1 févr. 2008 à 10:06
bonjour,

merci jesusOnLine de bien vouloir m'aider. tres bonne suggestion, ca m'ouvre vers d'autres voies. Par contre celle du display:none, j'aime pas ... :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.

Je vous tiens au courant des que j'ai des news

Cordialement
0
cs_Cdelhaye Messages postés 1 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 6 juin 2008
6 juin 2008 à 23:27
Bonjour

Encore plus simple

Private
Sub GridView1_RowDataBound(
ByVal sender
As
Object,
ByVal e
As System.Web.UI.WebControls.GridViewRowEventArgs)
Handles GridView1.RowDataBound
e.Row.Cells(1).Visible =

False

End
Sub
0
Rejoignez-nous