Add Text Box TemplateField Column to GridView Programmatically

How to add a TextBox column to a GridView from code?

+7
source share
1 answer

Use a TemplateField and add a TextBox to ItemTemplate / EditItemTemplate.

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

You can associate it with aspx, as in the example above, or in 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: Here is a simple example of how to dynamically add a TemplateField:

 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

+18
source

All Articles