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 : 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
 
        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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
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.