我有一个按钮单击事件,可以向表中添加文本。但是,当我提交表单时,输入到表中的值不会出现在回发中...这可能吗?
这是我的代码:
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
答案 0 :(得分:2)
您需要将表提交到ViewState或Session,或者每次回发页面时重新创建表。如果表不是太大,您可以将它放在ViewState中。
将表保存到ViewState:
ViewState["MyTable"] = table;
从ViewState检索表:
table = (DataTable)ViewState["MyTable"];
答案 1 :(得分:0)
Trick是在Load事件中填充表 ...然后一切正常开始。
答案 2 :(得分: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
希望这个帮助