0

我试图在我的页面上实现一个查找控件,找到一个 ID 为“w1test”的文本框,但是我一直收到一条错误消息,提示“对象引用未设置为对象的实例”。但是我认为一切都井井有条...

这是我的代码:

Private Sub getTextbox()
    Try
        Dim txtbox As TextBox = CType(Page.FindControl("w1test"), TextBox)
        txtbox.Text = "UPDATED"
    Catch ex As Exception
    End Try
End Sub

提前致谢。

4

2 回答 2

2

您需要 FindControl 的递归版本。像这样的东西

Public Function RecursiveFindControl(container As Control, name as String) as Control
    If Not(container.ID Is Nothing) AndAlso (container.ID.Equals(name)) Then
        Return container
    End If

    For Each c as Control in container.Controls
        Dim ctrl as Control = RecursiveFindControl(c, name)
        If Not ctrl Is Nothing Then
            return ctrl
        End If
    Next
    return Nothing
End Function

打电话给

 Dim txtbox As TextBox = CType(RecursiveFindControl(Page, "w1test"), TextBox)  
于 2012-08-29T13:16:41.920 回答
0

以下对我有用。如果我需要遍历控件(例如 TextBox0、TextBox1 等),我只需NamingContainer从其中一个控件中获取,并使用该“父”控件来执行搜索其他控件,如下所示。

// get NamingContainer from one of the controls
Control parent = TextBox0.NamingContainer;
// now can iterate through controls
for(int i = 0; i < someBound; i++)
{
    ((TextBox)parent.FindControl("TextBox" + i)).Text = "Text here now";
}
于 2013-04-22T16:25:05.487 回答