在动态生成的表中无法FindControl

时间:2012-06-28 16:44:19

标签: asp.net asp.net-4.0 findcontrol asp.net-controls

我有一个动态生成的表,并且对于表中的每一行,都有一些表单文本框供用户完成然后提交表单。我遇到的问题是在提交后访问这些字段中的值。

该表具有Id = tableAssigneeChildren

这是我试图访问的其中一个文本框生成的html:

<input name="ctl00$ContentPlaceHolder1$tChildName1" type="text" value="Test Name" id="tChildName1" />

下面的代码就是我用来测试我是否可以访问上面的文本框:

Protected Sub btnSubmit_Click(sender As Object, e As System.EventArgs) Handles btnSubmit.Click

    Dim childId As Integer

    For childId = 1 To CInt(iChild.Value)

        Response.Write(DirectCast(tableAssigneeChildren.FindControl("tChildName" & childId), TextBox).Text & "<br />")

    Next

End Sub

提前感谢您的帮助。 学家

1 个答案:

答案 0 :(得分:1)

每次回发都会丢失动态创建的控件。我建议将表格添加到您的标记中,原因如下:

  1. 人们经常遇到没有显示用户控件的问题。

  2. Usercontrols事件未被触发,因为标记中不存在用户控件而是动态生成。

  3. 速度(页面大小)没有区别。您可以根据需要切换可见性。

  4. 更清洁,更优雅的解决方案。

  5. 无论如何,如果您确实需要动态添加表格,请查看此问题Dynamic Controls and Postback和本教程http://www.4guysfromrolla.com/articles/092904-1.aspx