Gridview - Masquer une colonne générée automatiquement
2 réponses
Richard Torre
Bonjour tout le monde,
cela fait un petit moment que je bûche sur ce problème.
J'essaie en vain de masquer une colonne auto-générée d'un gridview.
J'élabore une requête qui retourne n colonnes dont un identifiant.
Code :
Dim DTPERS As New DataTable
DTPERS.Columns.Add(New DataColumn("idpers", GetType(Integer)))
DTPERS.Columns.Add(New DataColumn("nomprenom", GetType(String)))
'on met idpers en clef primaire
Dim PrimaryKeyColumns(0) As DataColumn
PrimaryKeyColumns(0) = DTPERS.Columns(0)
DTPERS.PrimaryKey = PrimaryKeyColumns
...
Dim dv As DataView = New DataView(DTPERS)
dv.Sort = "nomprenom asc"
GridView1.DataSource = dv
GridView1.DataBind()
GridView1.Columns(0).Visible = False
Malheureusement ça ne fonctionne pas. Cele me crée une erreur d'index. On
dirait que le gridview ne sotcke pas les colonnes autogénérées dans la
collection column.
Du coup j'ai enlevé cette ligne et rendu invisible le champ idpers via le
code suivant :
Code :
Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewRowEventArgs) Handles
GridView1.RowDataBound
'corrige le wrapping impossible à gérer via les propriétés du
gridview
e.Row.Cells(0).Style.Add("visibility", "hidden")
End Sub
Je ne trouve pas cette solution satisfaisante. Alors si vous avez des idées
?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier
Bonjour, Au lieu de cacher la cellule, pourquoi ne pas la supprimer directement ?
e.Row.Cells.RemoveAt(0)
"Richard Torre" a écrit dans le message de news:
Bonjour tout le monde,
cela fait un petit moment que je bûche sur ce problème. J'essaie en vain de masquer une colonne auto-générée d'un gridview.
J'élabore une requête qui retourne n colonnes dont un identifiant.
Code :
Dim DTPERS As New DataTable DTPERS.Columns.Add(New DataColumn("idpers", GetType(Integer))) DTPERS.Columns.Add(New DataColumn("nomprenom", GetType(String)))
'on met idpers en clef primaire Dim PrimaryKeyColumns(0) As DataColumn PrimaryKeyColumns(0) = DTPERS.Columns(0) DTPERS.PrimaryKey = PrimaryKeyColumns
...
Dim dv As DataView = New DataView(DTPERS) dv.Sort = "nomprenom asc"
GridView1.DataSource = dv GridView1.DataBind() GridView1.Columns(0).Visible = False Malheureusement ça ne fonctionne pas. Cele me crée une erreur d'index. On dirait que le gridview ne sotcke pas les colonnes autogénérées dans la collection column.
Du coup j'ai enlevé cette ligne et rendu invisible le champ idpers via le code suivant :
Code :
Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 'corrige le wrapping impossible à gérer via les propriétés du gridview
e.Row.Cells(0).Style.Add("visibility", "hidden")
End Sub Je ne trouve pas cette solution satisfaisante. Alors si vous avez des idées ?
Merci en tout cas d'avoir lu ma tartine.
--
Predalpha
Bonjour,
Au lieu de cacher la cellule, pourquoi ne pas la supprimer directement ?
e.Row.Cells.RemoveAt(0)
"Richard Torre" <microprog@nospam.mospam> a écrit dans le message de
news:OJHG2sqeIHA.748@TK2MSFTNGP04.phx.gbl...
Bonjour tout le monde,
cela fait un petit moment que je bûche sur ce problème.
J'essaie en vain de masquer une colonne auto-générée d'un gridview.
J'élabore une requête qui retourne n colonnes dont un identifiant.
Code :
Dim DTPERS As New DataTable
DTPERS.Columns.Add(New DataColumn("idpers", GetType(Integer)))
DTPERS.Columns.Add(New DataColumn("nomprenom", GetType(String)))
'on met idpers en clef primaire
Dim PrimaryKeyColumns(0) As DataColumn
PrimaryKeyColumns(0) = DTPERS.Columns(0)
DTPERS.PrimaryKey = PrimaryKeyColumns
...
Dim dv As DataView = New DataView(DTPERS)
dv.Sort = "nomprenom asc"
GridView1.DataSource = dv
GridView1.DataBind()
GridView1.Columns(0).Visible = False
Malheureusement ça ne fonctionne pas. Cele me crée une erreur d'index. On
dirait que le gridview ne sotcke pas les colonnes autogénérées dans la
collection column.
Du coup j'ai enlevé cette ligne et rendu invisible le champ idpers via le
code suivant :
Code :
Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewRowEventArgs) Handles
GridView1.RowDataBound
'corrige le wrapping impossible à gérer via les propriétés du
gridview
e.Row.Cells(0).Style.Add("visibility", "hidden")
End Sub
Je ne trouve pas cette solution satisfaisante. Alors si vous avez des
idées ?
Bonjour, Au lieu de cacher la cellule, pourquoi ne pas la supprimer directement ?
e.Row.Cells.RemoveAt(0)
"Richard Torre" a écrit dans le message de news:
Bonjour tout le monde,
cela fait un petit moment que je bûche sur ce problème. J'essaie en vain de masquer une colonne auto-générée d'un gridview.
J'élabore une requête qui retourne n colonnes dont un identifiant.
Code :
Dim DTPERS As New DataTable DTPERS.Columns.Add(New DataColumn("idpers", GetType(Integer))) DTPERS.Columns.Add(New DataColumn("nomprenom", GetType(String)))
'on met idpers en clef primaire Dim PrimaryKeyColumns(0) As DataColumn PrimaryKeyColumns(0) = DTPERS.Columns(0) DTPERS.PrimaryKey = PrimaryKeyColumns
...
Dim dv As DataView = New DataView(DTPERS) dv.Sort = "nomprenom asc"
GridView1.DataSource = dv GridView1.DataBind() GridView1.Columns(0).Visible = False Malheureusement ça ne fonctionne pas. Cele me crée une erreur d'index. On dirait que le gridview ne sotcke pas les colonnes autogénérées dans la collection column.
Du coup j'ai enlevé cette ligne et rendu invisible le champ idpers via le code suivant :
Code :
Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 'corrige le wrapping impossible à gérer via les propriétés du gridview
e.Row.Cells(0).Style.Add("visibility", "hidden")
End Sub Je ne trouve pas cette solution satisfaisante. Alors si vous avez des idées ?
Merci en tout cas d'avoir lu ma tartine.
--
Predalpha
Richard Torre
Je te remercie d'avoir pris le temps de regarder mon problème. Ne connaissant pas le remove de cellules avant ton message, je suis passé par un gridview généré à la volée. Je laisse mon code ci-dessous :
Code :
Dim DTPERS As New DataTable DTPERS.Columns.Add(New DataColumn("idpers", GetType(Integer))) DTPERS.Columns.Add(New DataColumn("nomprenom", GetType(String)))
'... 'Chargement des données dans la datatable '...
For Each col In DTPERS.Columns Dim oColonne As BoundField = New BoundField oColonne.HeaderText = col.ColumnName oColonne.DataField = col.ColumnName oColonne.ItemStyle.Wrap = False GridView1.Columns.Add(oColonne) oColonne = Nothing Next GridView1.Columns(0).Visible = False 'liaison datatable au gridview Dim dv As DataView = New DataView(DTPERS) dv.Sort = "nomprenom asc"
GridView1.DataSource = dv GridView1.DataBind()
Predalpha Richard Torre
Je te remercie d'avoir pris le temps de regarder mon problème. Ne
connaissant pas le remove de cellules avant ton message,
je suis passé par un gridview généré à la volée. Je laisse mon code
ci-dessous :
Code :
Dim DTPERS As New DataTable
DTPERS.Columns.Add(New DataColumn("idpers", GetType(Integer)))
DTPERS.Columns.Add(New DataColumn("nomprenom", GetType(String)))
'...
'Chargement des données dans la datatable
'...
For Each col In DTPERS.Columns
Dim oColonne As BoundField = New BoundField
oColonne.HeaderText = col.ColumnName
oColonne.DataField = col.ColumnName
oColonne.ItemStyle.Wrap = False
GridView1.Columns.Add(oColonne)
oColonne = Nothing
Next
GridView1.Columns(0).Visible = False
'liaison datatable au gridview
Dim dv As DataView = New DataView(DTPERS)
dv.Sort = "nomprenom asc"
Je te remercie d'avoir pris le temps de regarder mon problème. Ne connaissant pas le remove de cellules avant ton message, je suis passé par un gridview généré à la volée. Je laisse mon code ci-dessous :
Code :
Dim DTPERS As New DataTable DTPERS.Columns.Add(New DataColumn("idpers", GetType(Integer))) DTPERS.Columns.Add(New DataColumn("nomprenom", GetType(String)))
'... 'Chargement des données dans la datatable '...
For Each col In DTPERS.Columns Dim oColonne As BoundField = New BoundField oColonne.HeaderText = col.ColumnName oColonne.DataField = col.ColumnName oColonne.ItemStyle.Wrap = False GridView1.Columns.Add(oColonne) oColonne = Nothing Next GridView1.Columns(0).Visible = False 'liaison datatable au gridview Dim dv As DataView = New DataView(DTPERS) dv.Sort = "nomprenom asc"