Bonjour,

j'ai le problème suivant :

j'ai une application web qui utilise un GridView.
J'initialise le GridView avec un DataTable, puis je définis le comportement des colonnes avec un Template que j'ai créé.

Mon problème est que lorsque j'affiche mon GridView, la table s'affiche 2 fois.
La première avec les modifications du Template (colonnes éditables...) et la seconde en normal (non éditable).
Avez vous une idée d'ou cela peut provenir?

Voici le code que j'utilise :
L'initialisation du GridView :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
GridView1.DataSource = _table.Table
 
' Ajout des autres colonnes
For i As Integer = 0 To _table.Table.Columns.Count - 1
       Dim field As TemplateField = New TemplateField()
       field.HeaderTemplate = New TableTemplate(ListItemType.Header, SetNom(_table.Table.Columns(i).ColumnName))
       field.ItemTemplate = New TableTemplate(ListItemType.Item, SetNom(_table.Table.Columns(i).ColumnName))
       GridView1.Columns.Add(field)
Next
 
GridView1.DataBind()
Et le code du template :
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
Public Sub InstantiateIn(container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn
        Dim lbl As Label
        Dim txt As TextBox
        Select Case _templateType
            Case ListItemType.Header
                lbl = New Label
                lbl.Text = _columnName
                container.Controls.Add(lbl)
            Case ListItemType.Item
                txt = New TextBox
                txt.ID = _columnName
                txt.Width = New Unit("42px")
                AddHandler txt.DataBinding, AddressOf txt_databinding
                container.Controls.Add(txt)
        End Select
    End Sub
 
''' <summary>
    ''' Méthode définissant le databinding associé au textbox
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Protected Sub txt_databinding(ByVal sender As Object, ByVal e As EventArgs)
        Dim txt As TextBox = TryCast(sender, TextBox)
        Dim container As GridViewRow = TryCast(txt.NamingContainer, GridViewRow)
        Dim datavalue As Object = DataBinder.Eval(container.DataItem, GetAlias(_columnName))
        If Not IsNothing(datavalue) AndAlso Not IsDBNull(datavalue) Then
            txt.Text = CStr(datavalue)
        End If
    End Sub
Je vous remercie d'avance pour votre aide.