7 votes

Ajouter une colonne Textbox TemplateField à une grille de vues par programme

Comment ajouter une colonne TextBox à une GridView à partir du code ?

17voto

Tim Schmelter Points 163781

Utiliser un TemplateField et ajoutez une TextBox à l'ItemTemplate/EditItemTemplate.

<ItemTemplate>
    <asp:TextBox ID="TxtFirstName" runat="server" Text='<%# Bind("FirstName") %>'></asp:TextBox>
</ItemTemplate>

Vous pouvez le lier à l'aspx comme dans l'exemple ci-dessus ou dans GridView.RowDataBound :

Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
    Select Case e.Row.RowType
        Case DataControlRowType.DataRow
            Dim dr As DataRow = DirectCast(DirectCast(e.Row.DataItem, DataRowView).Row)
            Dim TxtFirstName As TextBox = DirectCast(e.Row.FindControl("TxtFirstName"), TextBox )
            TxtFirstName.Text = dr("FirstName").ToString
    End Select
End Sub

Edit : Voici un exemple simple sur la façon d'ajouter un TemplateField dynamiquement :

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    If Not IsPostBack Then
        Dim txtColumn As New TemplateField
        txtColumn.ItemTemplate = New TextColumn
        Me.GridView1.Columns.Add(txtColumn)
    End If
End Sub

Class TextColumn
    Implements ITemplate

    Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn
        Dim txt As New TextBox
        txt.ID = "MyTextBox"
        container.Controls.Add(txt)
    End Sub
End Class

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.templatefield.templatefield.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X