将文本框插入Gridview

时间:2012-09-27 14:52:58

标签: c# asp.net gridview textbox webforms

我有一个Gridview,其数据源设置为DataTable。由于所需数据未在数据库中保存,因此已完成此操作。以这种方式生成两列。我需要的是第三列有文本框,因此用户可以输入他们的评论等。

我的代码是

    Dim dt As DataTable = New DataTable
    Dim row As DataRow

    ' Generate Columns
    dt.Columns.Add("Col One")
    dt.Columns.Add("Col Two")
    dt.Columns.Add("Textbox Col")

    ' Populate rows with required data
    row = dt.NewRow
    row.Item("Col One") = SomeData
    row.Item("Col Two") = SecondaryData
    row.Item("Textbox Col") = InsertTextbox("data")

    ' Add row to DataTable
    dt.Rows.Add(row)

    gvData.DataSource = dt
    gvData.DataBind()

除了插入文本框(InsertTextbox)之外,上面的代码完全符合我的要求。文本框代码是

Private Function InsertTextbox(ByVal TBText As String) As TextBox
    Dim tbox As TextBox = New TextBox

    With tbox
        .Width = 100
        .Height = 25
        .Text = TextboxText
        .ID = TextboxText
    End With

    gvData.Controls.Add(txtbox)

    Return txtbox
End Function

以上代码已更改几次,以了解我如何允许将文本框插入gridview单元格。

目前我根据需要返回数据,但Textbox Col显示为System.Web.UI.WebControls.TextBox。添加.Text会显示文本(在本例中为数据),但它以标签格式显示,这意味着您无法在其中输入任何内容。

有人可以建议我如何以这种方式插入文本框吗?

由于

1 个答案:

答案 0 :(得分:0)

在网格视图中定义Templatefield,并在PlaceHolder内放置Templatefield控件。

<asp:GridView ID="GridView1" runat="server" >
   <Columns>
      <asp:TemplateField>
         <ItemTemplate>
              <asp:PlaceHolder ID="PlaceHolder_InputControl" runat="server" />
         </ItemTemplate>
       </asp:TemplateField>
   </Columns>

使用RowCreated event动态添加文本框:

Protected Sub GridView1_RowCreated(sender As Object, e As GridViewRowEventArgs)

    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim pc1 As PlaceHolder = DirectCast(e.Row.Cells(0).Controls(1), PlaceHolder)
        Dim tb As TextBox = New TextBox
        With tb
                .Width = 100
                .Height = 25
                .Text = TextboxText
                .ID = TextboxText
        End With
        pc1.Controls.Add(tb)
    End If

End Sub