在我的default.aspx页面上,我有一堆带有ID和runat =“server”的div:
<div id="serverOne" runat="server"></div>
<div id="serverTwo" runat="server"></div>
<!--etc...-->
在我的代码中,我已经声明了一个带有2个值的多维数组(或网格) - 第一个是IP地址,第二个是服务器名称。
Dim servers = {{"10.0.0.0", "serverOne"}, {"10.0.0.1", "serverTwo"}}
我的问题是,有没有办法可以使用数组中的值从我的代码中定位我的div?
For i As Integer = 0 To 1
'This is what I want it to do:
servers(i, 1).InnerHtml = "<span>Testing " & servers(i, 1) & "</span>"
Next
答案 0 :(得分:3)
您可以使用页面上的FindControl
方法执行此操作。但是,开箱即用的FindControl
只能看到第一级别的孩子,而不会进入孩子的孩子。为了处理这个问题,你需要使用一个帮助方法,允许FindControl
递归搜索控件层次结构以找到你想要的那个。将此方法添加到您的代码后面,或者一些多个页面可以访问的共享类:
Protected Function FindControlRecursive(control As Control, id As String)
If (control.ID = id) Then
Return control
End If
For Each ctl In control.Controls
Dim foundControl = FindControlRecursive(ctl, id)
If (foundControl IsNot Nothing) Then
Return foundControl
End If
Next
Return Nothing
End Function
完成后,只需使用字符串ID属性即可轻松找到<div>
。
For i As Integer = 0 To 1
Dim div = CType(FindControlRecursive(Me, servers(i, 1)), HtmlGenericControl)
div.InnerHtml = "<span>Testing " & servers(i, 1) & "</span>"
Next