0

n ASP.NET DetailsView 内にネストされ、AJAX UpdatePanel コントロールにネストされている TextBox のコントロール ID を見つけるにはどうすればよいですか?

階層は次のとおりです: UpdatePanel1 -> dvContentDetail (DetailsView コントロール) -> TextBox2

次のようなことを試しましたが、オブジェクトが見つからないというだけです:

UpdatePanel1.FindControl("dvContentDetail").FindControl("TextBox2").ClientID
4

2 に答える 2

1

これらのコントロールは直接利用できるため、updatepanelからコントロールを見つける必要はありません。したがって、コードは次のようになります...

TextBox TextBox2 = (TextBox)dvContentDetail.FindControl("TextBox2");
于 2009-07-09T05:09:36.223 に答える
0

以下のコードのようなものを試すことができます。ただし、階層が変更されないことがわかっている場合は、一連の「FindControl」呼び出しを実行することをお勧めします。正しい階層を見つけるには、アプリをデバッグし、コントロール階層を検索します。

public static T FindControlRecursiveInternal<T>(Control startingControl, string controlToFindID) where T : Control
{
    if (startingControl == null || String.IsNullOrEmpty(controlToFindID))
        return (T)null;

    Control foundControl = startingControl.FindControl(controlToFindID);
    if (foundControl == null)
    {
        foreach (Control innerControl in startingControl.Controls)
        {
            foundControl = FindControlRecursiveInternal<T>(innerControl, controlToFindID);
            if (foundControl != null)
                break;
        }
    }

    return (T)foundControl;
}
于 2009-07-08T17:47:41.880 に答える