【问题标题】:Cannot FindControl within dynamically generated table无法在动态生成的表中查找控件
【发布时间】:2012-06-28 16:44:19
【问题描述】:

我有一个动态生成的表格,表格中的每一行都有一些表单文本框供用户填写,然后提交表单。我遇到的问题是一旦提交就访问这些字段中的值。

该表具有 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

提前感谢您的帮助。 J.

【问题讨论】:

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


    【解决方案1】:

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

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

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

    3. 速度(页面大小)没有差异。您可以根据需要切换那里的可见性。

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

    无论如何,如果你真的需要动态添加表格,看看这个问题Dynamic Controls and Postback和这个教程http://www.4guysfromrolla.com/articles/092904-1.aspx

    【讨论】:

    • 感谢在我阅读“每次回发时动态创建的控件都丢失”后对问题进行了排序,我有在 If Not Page.IsPostBack Then 语句中创建表的函数。我需要使用动态生成的表,因为它的内容取决于数据库中的数据。不过感谢您的帮助。
    猜你喜欢
    • 2021-12-18
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2013-07-18
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    相关资源
    最近更新 更多