我在Page load上动态创建了几个HTML控件。 我的代码看起来像这样:
Protected Sub Page_Load(sender as Object, e As EventArgs) Handles Me.Load
Dim sb As New StringBuilder
Dim i as Integer = 0
sb.Append("<table class ='tabledata' id='tblContent'>")
For Each item As myObject In myList
i += 1
sb.Append("<tr><td>")
sb.Append("<textarea runat='server' id=txt_comments" & i & "
name='txt_comments' rows='5' cols='60'></textarea></td>")
sb.Append("</tr>")
Next
sb.Append("</table>")
myDiv.InnerHtml = sb.ToString
End Sub
从上面的代码中,
我正在使用stringbuilder在页面加载上动态创建<textarea>
HTML控件,最后将此字符串分配给我在.aspx页面中的div
<div id="myDiv" runat="server">
我可以在Page load上查看动态创建的控件。
现在我想在按钮点击事件(保存)中访问这些文本框中的值。
我该怎么做? 任何帮助? 提前谢谢。
答案 0 :(得分:0)
您将所有textarea命名为txt_comments,您将在Request.Form中看到数据(&#34; txt_comments&#34;)。在名称中添加I,然后您可以使用Request.Form访问数据(&#34; txt_comments&#34;&amp; i)
sb.Append("<textarea runat='server' id=txt_comments" & i & "
name='txt_comments" & i & "' rows='5' cols='60'></textarea></td>")
由于这是html生成的,因此您不需要属性runat =&#39; server&#39;。
这是我的测试代码。由于我不知道你如何初始化myList,我只是从0循环到10。
HTML
<body>
<form id="form1" runat="server">
<div id="myDiv" runat="server">
</div>
<asp:button ID="btnTest" runat="server" Text="Test" />
</form>
</body>
背后的代码
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim sb As New StringBuilder
Dim i As Integer = 0
sb.Append("<table class ='tabledata' id='tblContent'>")
For i = 0 To 10
sb.Append("<tr><td>")
sb.Append("<textarea runat='server' id=txt_comments" & i & "
name='txt_comments" & i & "' rows='5' cols='60'></textarea></td>")
sb.Append("</tr>")
Next
sb.Append("</table>")
myDiv.InnerHtml = sb.ToString
End Sub
Protected Sub btnTest_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnTest.Click
For i = 0 To 10
Response.Write("[" & Request.Form("txt_comments" & i) & "]")
Next
End Sub