2

私の default.aspx ページには、ID と runat="server" を持つ多数の div があります。

<div id="serverOne" runat="server"></div>
<div id="serverTwo" runat="server"></div>
<!--etc...-->

コード ビハインドでは、2 つの値を持つ多次元配列 (またはグリッド) を宣言しました。1 つ目は IP アドレスで、2 つ目はサーバー名です。

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 に答える