Ich habe auf meiner Seite eine Reihe von Tafeln, in denen ich Benutzerinformationen sammle und die Seitendetails speichere. Das Seitenfenster enthält ein Textfeld, eine Dropdown-Liste und ein Listenfeld.
Wenn ich auf diese Seite komme. Ich muss die Seite anzeigen, wenn diese Steuerelemente irgendwelche Werte haben. Wie geht das?
Es läuft darauf hinaus, alle Steuerelemente in der Steuerhierarchie aufzulisten:
%Vor%Sie können es wie folgt verwenden:
%Vor%Sie können durch die Bedienelemente der Bedienfelder blättern
%Vor%Wenn Sie sie innen verschachtelt haben, benötigen Sie eine Funktion, die das rekursiv tut.
Ich weiß, das ist ein alter Post, und ich mochte christian libardos Lösung. Allerdings mag ich nicht, dass ich, um dem äußeren Geltungsbereich eine ganze Menge von Elementen zu geben, diese Elemente noch einmal durchlaufen müsste, um mir diese aus einem inneren Bereich in den aktuellen Bereich zu bringen. Ich bevorzuge:
%Vor%Was mir erlaubt, es so zu benutzen:
%Vor%Abhängig davon, welche UI-Bibliothek oder Sprache Sie verwenden, wird in Containersteuerelementen wie Gruppen eine Liste der untergeordneten Steuerelemente verwaltet. Um zu testen, ob ein Formular / eine Seite Daten enthält, müssen Sie jedes Panel rekursiv nach Dateneingabesteuerelementen wie Textfeldern durchsuchen. Testen Sie dann, ob eines der Dateneingabesteuerelemente andere Werte als den Standardwert enthält.
Eine einfachere Lösung wäre die Implementierung einer Observer-Klasse, die an die geänderten Ereignisse Ihrer Datensteuerelemente angehängt wird. Wenn der Beobachter ausgelöst wird, hat Ihre Seite Änderungen. Sie müssen Maßnahmen wie das Ändern und anschließende Zurücksetzen von Daten in Betracht ziehen.
Sehr ähnliche Lösung zu Cristian hier, die Rekursion und Generika verwendet, um jedes Steuerelement auf der Seite zu finden (Sie können das Steuerelement angeben, mit dem die Suche beginnen soll).