2011-08-08 40 views
1

我有一个按钮单击事件,它向表中添加文本。然而,当我提交表单时,输入到表格中的值不会出现在回发中......这可能吗?asp.net表动态地添加行在回发后不会保留

这里是我的代码:

Protected Sub AddRowToInputTables(table As Table, value As String) 
    If table IsNot Nothing Then 
     Dim id As String = value.Trim() 
     Dim prefix As String = "" 
     If (table.ID = "cust_num") Then ' todo - abstract this out and use a parameter for the prefix instead 
      prefix = "CN" 
     Else 
      prefix = "RN" 
     End If 
     If id <> String.Empty Then 
      Dim tr = New TableRow() 
      Dim td = New TableCell() 
      Dim td2 = New TableCell() 
      Dim btnDelete = New ImageButton() 
      btnDelete.ID = "btn" & prefix & "_" & id & "_del" 
      btnDelete.ImageUrl = "http://res.xxxxxxxx.net/images/delete.png" ' todo - put this in the web.config or settings file 
      tr.ID = id 
      td.Text = id 
      td2.Controls.Add(btnDelete) 
      tr.Cells.Add(td) 
      tr.Cells.Add(td2) 
      Dim rows = New List(Of TableRow)() 
      For Each row In table.Rows 
       rows.Add(row) 
      Next 
      rows.Add(tr) 
      table.Rows.Clear() 
      table.Rows.AddRange(rows.ToArray()) 
      cust_num_txt.Value = String.Empty 
      res_num_txt.Value = String.Empty 
     End If 
    End If 
End Sub 
+2

的Dyn amic数据必须在每次回发时重新创建。 – Zachary

回答

0

关键是要填入表中Load事件只有 ...那么一切开始正常工作。

2

你要么需要提交表格ViewState的或会议,或每次页面回发时重新创建表。如果表格不是太大,你可以把它扔到ViewState中。

要将表保存到ViewState的:

ViewState["MyTable"] = table; 

从ViewState中检索表:

table = (DataTable)ViewState["MyTable"]; 
+0

不是太大......只会有最多20个项目... thx的提示,将尝试出来,并回来! – bbqchickenrobot

+2

没有工作...表不是可序列化的.... – bbqchickenrobot

0

我有同样的问题,以下解决方案行之有效:

sub AddRowsToTable() 
    session("MyTable") = Nothing 
    MyTable.Rows.Clear 
    '... Adding rows and cells here ... 
end sub 


Protected Sub btnRefreshTable_Click(sender As Object, e As ImageClickEventArgs) Handles btnRefreshTable.Click 
    AddRowsToTable() 
    Session("MyTable") = MyTable 
End Sub 


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Page.IsPostBack Then 
     If Not IsNothing(Session("MyTable")) Then 
      AddRowsToTable() 
     End If 
    End If 
End Sub 

希望这有助于

相关问题