Question

Sur une forme particulière de l'élément de liste personnalisée je fais pour mon WSS 3.0 application web, je dois valider la page lorsqu'il est chargé, de sorte que les erreurs effectuées par l'utilisateur à partir d'une sauvegarde précédente sont notées immédiatement. Je fais actuellement en utilisant Page.Validate() dans la méthode OnLoad.

Avec tous les contrôles de TextBox et RadioButtonList je POPULATE (également la charge de la page), je peux simplement les remplir avant de déclencher un tas de contrôles de InputFormCustomValidator sur la page. Pour les contrôles, tout est clair et les champs correctement rempli ne sont pas marqués comme non valides.

Mais pour les UserField et les contrôles DateTimeField, il les traitera comme vide pour la validation de chargement de la page ou non ils ont des données en eux. Cela se produit à la fois lors de l'utilisation des commandes de UserField et DateTimeField réels qui récupèrent automatiquement les données en fonction de l'élément ID querystring, et lorsque vous utilisez les commandes de PeopleEditor et DateTimeControl sous-jacents que je préremplir à la page charge comme les zones de texte.

Une fois il a été un post-retour que les appels à la validation, la validation reconnaîtra correctement le contenu de ces champs.

Y at-il quelque chose que je peux faire pour contourner ce problème, de sorte que les champs utilisateur et DateTime correctement rempli sont pas marqués comme non valides de la charge de la page? Dois-je exécuter la validation d'une méthode différente de celle OnLoad? Je voudrais personnellement comme pour garder les champs comme UserField et DateTimeField plutôt que d'utiliser les contrôles sous-jacents, mais qui restreint moi de ne pas être en mesure de définir quand ils sont peuplés. Si la solution est de déplacer la pré-population témoin à un stade plus précoce dans le temps, je peux régler pour cela, mais il reste préférable de ne pas avoir à le faire si elle peut être fixée d'une autre manière.

Était-ce utile?

La solution

Avez-vous essayé d'appeler EnsureChildControls () avant la .Validate ()? En outre, si vous créez / commandes de chargement dynamique, qui est habituellement fait dans le cas CreateChildControls () plutôt que le OnLoad () comme la plupart des contrôles personnalisés doivent participer aux événements avant Load ().

Autres conseils

Peut-être essayer le déplacement appel Page.Validate () à l'événement OnPreRender?

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top