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、これらのコントロールの 1 つから を取得し、その「親」コントロールを使用して、次のように他のコントロールを検索します。

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