2009-06-17 5 views
2

Ich habe eine TextBox in einem Panel auf einer Aspx-Seite.Wie kann ich feststellen, ob ein Steuerelement auf einer Seite aktiviert ist?

Ich muss einen RequiredFieldValidator deaktivieren, wenn die TextBox nicht aktiviert ist.

Wenn das Gremium deaktiviert ist, und TextBox.Enabled wahr ist, dann ist das Textfeld auf der Seite deaktiviert (was in Ordnung ist.)

Wie kann ich herausfinden, ob das Textfeld auf der Seite deaktiviert, wenn die Enabled-Eigenschaft ist nicht zuverlässig?

Beachten Sie, dass ich eine generische Lösung brauche, da es viele verschachtelte Ebenen von Containern geben kann und die Container nicht immer Panels sind.

Antwort

4

Sie können eine rekursive Suche in der Steuerungshierarchie durchführen. Ihr Steuerelement ist Aktiviert, wenn es aktiviert ist und alle seine Vorfahren ebenfalls aktiviert sind.

bool IsControlEnabled (WebControl control) 
{ 
    if (!(control.Parent is WebControl)) 
     return control.Enabled; 

    return control.Enabled && 
     IsControlEnabled(control.Parent as WebControl); 
} 
1

Wie deaktivieren Sie die Containersteuerelemente? Gibt es einen Grund, warum Sie die Steuerelemente Textbox und RequiredFieldValidator nicht deaktivieren können, wenn Sie ihren Container deaktivieren?

Verwandte Themen