2012-08-17 43 views
1

訪問服務器端控制在我的Default.aspx頁面我有一堆用ID和RUNAT =「服務器」的div:其ID屬性在ASP.net

<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 

回答

2

您可以使用頁面上的FindControl方法執行此操作。然而,開箱即用的FindControl只能看到第一級的孩子,而不會進入兒童的孩子。爲了處理這個問題,你需要使用一個幫助方法,允許FindControl通過控制層次遞歸搜索找到你想要的。一旦你的,這是很容易找到你的<div>只是使用字符串ID屬性

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 

:此方法添加到您的代碼背後,或多個頁面可以訪問某些共享類。

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

+0

太感謝你了!它像一個魅力! – user973259 2012-08-17 14:56:32