以编程方式将文本框模板字段列添加到GridView

7
如何在代码后台向GridView添加一个文本框列?
1个回答

17

使用TemplateField,并在ItemTemplate/EditItemTemplate中添加一个TextBox。

<ItemTemplate>
    <asp:TextBox ID="TxtFirstName" runat="server" Text='<%# Bind("FirstName") %>'></asp:TextBox>
</ItemTemplate>
你可以像上面的例子一样在aspx上绑定它,或者在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

编辑:下面是一个简单的示例,说明如何动态添加模板字段:

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

请注意,这是原始的英文网址链接,需要使用其他翻译工具将其翻译为中文。

@Raika:抱歉,我已经阅读了这部分内容 ;) 作为第一步,请在此处查看:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.templatefield.templatefield.aspx - Tim Schmelter
1
我想要类似这样的代码:TemplateField tmp = new TemplateField(); tmp.Add(textbox); grd.Columns.Add(tmp); - user495093

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接