代码之家  ›  专栏  ›  技术社区  ›  rybosome

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

  •  0
  • rybosome  · 技术社区  · 16 年前

    到目前为止,代码方面的情况如下:

    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
    

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

    2 回复  |  直到 16 年前
        1
  •  0
  •   Tim Schmelter    16 年前

    您可以在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注册之后。 http://msdn.microsoft.com/en-us/library/ms178472.aspx

        2
  •  0
  •   tomfanning    16 年前

    HtmlTable似乎没有任何类型的ViewState感知,所以要么在每次回发时构建所有行,要么使用asp:Table or 一asp:Repeater instead.

    推荐文章