2

在我的 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
4

1 回答 1

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

一旦你有了它,很容易<div>通过使用字符串 ID 属性找到你的。

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

参考: http ://forums.asp.net/t/1107107.aspx/1

于 2012-08-17T14:37:26.383 回答