Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ASP.NET表中动态添加多行?_Asp.net - Fatal编程技术网

如何在ASP.NET表中动态添加多行?

如何在ASP.NET表中动态添加多行?,asp.net,Asp.net,以下是迄今为止我掌握的代码: Protected Sub btnAddRow7_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAddRow7.Click Dim tableRow As New System.Web.UI.WebControls.TableRow Dim tableCell As New System.Web.UI.WebControls.TableCell Dim text

以下是迄今为止我掌握的代码:

Protected Sub btnAddRow7_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAddRow7.Click

    Dim tableRow As New System.Web.UI.WebControls.TableRow
    Dim tableCell As New System.Web.UI.WebControls.TableCell
    Dim textBox As New System.Web.UI.WebControls.TextBox

    tableCell.Controls.Add(textBox)

    tableRow.Cells.Add(tableCell)

    tbl7.Rows.Add(tableRow)

End Sub

…但它仅动态添加一行。在第一次添加之后,更多地单击按钮不会添加更多行。知道为什么吗?更好的方法是?

HtmlTable似乎没有任何类型的ViewState感知,因此可以在每次回发时生成所有行,或者使用asp:Table或asp:Repeater来代替。

您可以在Page.Load中重建表。例如:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    rebuildMyTable()
End Sub

Private Sub rebuildMyTable()
    If Me.ViewState("TableRowCount") Is Nothing Then Me.ViewState("TableRowCount") = 0
    For i As Int32 = 0 To CInt(Me.ViewState("TableRowCount")) - 1
        AddTableRow()
    Next
End Sub

Private Sub AddTableRow()
    Dim tableRow As New System.Web.UI.WebControls.TableRow
    Dim tableCell As New System.Web.UI.WebControls.TableCell
    Dim textBox As New System.Web.UI.WebControls.TextBox

    tableCell.Controls.Add(textBox)

    tableRow.Cells.Add(tableCell)

    Me.MyTable.Rows.Add(tableRow)
End Sub

Protected Sub BtnAddRow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAddRow.Click
    AddTableRow()

    If Me.ViewState("TableRowCount") Is Nothing Then
        Me.ViewState("TableRowCount") = 1
    Else
        Me.ViewState("TableRowCount") = CInt(Me.ViewState("TableRowCount")) + 1
    End If
End Sub
这是因为按钮事件发生在Viewstate注册之后。

什么是tbl7?它是否启用了ViewState?对不起-tbl7是ASP代码中声明的表-这是后面的VB代码。是的,ViewState已启用。页面加载事件中有任何内容吗?我认为这可能是最好的解决方案…尽管这将导致一些非常复杂的问题。这一页将有14个左右的表格。无论如何,谢谢你的帮助-这是我需要开始的!