0

FormView 内のコントロールを取得するためのトリックは何ですか。私は FindControl() でそれらを取得していましたが、今ではそれらにアクセスできません。例: 私は、FooterTemplate にいくつかの ImageButton を持っています。FormView 内のコントロールに関しては、それらをスムーズに取得できます!!! すべてのコントロールを null にします。テンプレートごとに異なる名前を付ける必要があると思いますか? これは、このノイズの原因となっているテーブルについて考えさせられます!

DataBound イベントを使用して、特定のモードをチェックしています! 何か案は?ありがとうございました。

[更新しました]

これは機能しています

            if (this.kataSistimataFormView.CurrentMode == FormViewMode.Edit)
        {
            ImageButton update = (ImageButton)this.kataSistimataFormView.FindControl("btnUpdate");
            update.Visible = true;

しかし、これはどういうわけかいいえ

        CheckBox chkBoxPaidoi = kataSistimataFormView.FindControl("chkBoxPaidoi") as CheckBox;
4

3 に答える 3

0

FindControl は再帰的ではありません。つまり、検索しているコントロールの子コントロール内にあるコントロールのみが検索されるということです。子コントロールの子コントロールは検索されません。

以前に探していたコントロールを別のコントロール内に配置した場合は、その新しいコントロール内を検索するか、または kataSistimataFormView を親コントロールとして引き続き使用する場合は、再帰検索を使用する必要があります。

「findcontrol recursive」の Google には、カット アンド ペーストするだけでよい例がいくつかあります。

于 2010-02-05T00:09:11.340 に答える
0

これは、さまざまなテンプレート、Insert、Edit、Item で同じ名前 ID が原因で発生したようです。これでもコンパイラによってサポートされていますが、後でプログラムでそれらを使用する場合に問題があります。

皆さん、ありがとうございました。

于 2010-02-05T00:20:42.497 に答える
0

これを理解したことがありますか?ID がわかっている場合は、次の再帰関数を使用できます。

private Control FindControlRecursive(Control root, string id) 
{ 
    if (root.ID == id)
    { 
        return root; 
    } 

    foreach (Control c in root.Controls) 
    { 
        Control t = FindControlRecursive(c, id); 
        if (t != null) 
        { 
            return t; 
        } 
    } 

    return null; 
} 

ここにあります: http://www.codinghorror.com/blog/2005/06/recursive-pagefindcontrol.html

于 2013-06-13T18:33:15.633 に答える