Validierung auf Seite Last behandelt SharePoint -Feldsteuerung als leer
-
16-10-2019 - |
Frage
In einem bestimmten Formular für benutzerdefinierte Listenelemente, das ich für meine WSS 3.0 -Web -App erstelle, muss ich die Seite validieren, wenn sie geladen wird, damit alle Fehler, die der Benutzer von einem vorherigen Speicher macht, sofort festgestellt werden. Ich mache es derzeit mit Verwendung Page.Validate()
in dem OnLoad
Methode.
Mit all dem TextBox
und RadioButtonList
Steuerelemente, die ich bevölkern (auch auf Seitenlade), kann ich sie einfach bevölkern, bevor ich ein paar Bündel auslöste InputFormCustomValidator
Steuerelemente auf der Seite. Für diese Steuerelemente ist alles klar und die korrekt ausgefüllten Felder sind nicht als ungültig markiert.
Aber für die UserField
und DateTimeField
Steuerelemente, es wird sie als leer für die Seitenlastvalidierung behandeln, ob sie Daten enthalten oder nicht. Dies geschieht beides bei der Verwendung des tatsächlichen UserField
und DateTimeField
Steuerelemente, die Daten automatisch basierend auf der Element -ID -QueryString und bei der Verwendung der zugrunde liegenden PeopleEditor
und DateTimeControl
Steuerelemente, die ich auf der Seite vorpopuliere, laden Sie wie die Textfelder.
Sobald es nach dem Rückschlag gab, die Validierung erfordert, erkennt die Validierung den Inhalt dieser Felder ordnungsgemäß.
Gibt es etwas, das ich tun kann, um dies zu umgehen, damit die Felder von Benutzern und DateTime korrekt gefüllt sind nicht als ungültig auf Seite geladen markiert? Soll ich die Validierung in einer anderen Methode ausführen als OnLoad
? Ich würde persönlich gerne die Felder als behalten UserField
und DateTimeField
Anstatt die zugrunde liegenden Kontrollen zu verwenden, aber das beschränkt mich darauf, nicht in der Lage zu sein, zu definieren, wenn sie bevölkert werden. Wenn die Lösung darin besteht, die Kontrollvorpopulation rechtzeitig in eine frühere Stufe zu verschieben, kann ich mich damit zufrieden geben, aber es bleibt es vorzuziehen, dies nicht zu tun, wenn sie auf andere Weise repariert werden kann.
Lösung
Haben Sie versucht, äReChildControls () vor dem .validate () anzurufen? Wenn Sie Steuerelemente dynamisch erstellen/laden, wird dies normalerweise im Ereignis von CreateChildControls () statt im Onload () durchgeführt, da die meisten benutzerdefinierten Steuerelemente vor dem Load () an den Ereignissen teilnehmen müssen.
Andere Tipps
Versuchen Sie vielleicht, Seite zu bewegen.