Domanda

In un particolare modulo di elenco personalizzato che sto realizzando per la mia app Web WSS 3.0, sono tenuto a convalidare la pagina quando viene caricata, in modo che eventuali errori che l'utente commette da un precedente salvataggio vengano rilevati immediatamente. Attualmente lo faccio usando Page.Validate() nel OnLoad metodo.

Con tutto il TextBox e RadioButtonList Controlli che popolo (anche nel caricamento della pagina), posso semplicemente popolarli prima di attivare un sacco di InputFormCustomValidator controlli sulla pagina. Per quei controlli, tutto è chiaro e i campi correttamente compilati non sono contrassegnati come non validi.

Ma per il UserField e DateTimeField Controlli, li tratterà come vuoti per la convalida del caricamento della pagina indipendentemente dal fatto che abbiano o meno dati. Ciò si verifica entrambi quando si utilizza l'attuale UserField e DateTimeField controlla che recupera automaticamente i dati in base alla querystring ID elemento e quando si utilizzano la sottostante PeopleEditor e DateTimeControl Controlli che prepopoli sul caricamento della pagina come le caselle di testo.

Una volta che c'è stato un post-back che richiede la convalida, la convalida riconoscerà correttamente il contenuto di tali campi.

C'è qualcosa che posso fare per aggirare questo, in modo che gli utenti e i campi datetime correttamente riempiti non contrassegnato come non valido nel caricamento della pagina? Dovrei eseguire la convalida in un metodo diverso da OnLoad? Personalmente mi piacerebbe mantenere i campi come UserField e DateTimeField Piuttosto che usare i controlli sottostanti, ma questo mi limita a non essere in grado di definire quando vengono popolati. Se la soluzione è di spostare la pre-popolazione del controllo in una fase precedente nel tempo, posso accontentarmi, ma rimane preferibile non doverlo fare se può essere risolto in un altro modo.

È stato utile?

Soluzione

Hai provato a chiamare EnsureChildControls () prima di .Validate ()? Inoltre, se stai creando/caricando i controlli in modo dinamico, di solito viene fatto nell'evento CreateChildControls () piuttosto che nell'Onload () poiché la maggior parte dei controlli personalizzati deve partecipare agli eventi prima di Load ().

Altri suggerimenti

Forse prova a movonare la pagina.validate () alla chiamata all'evento OnPerender?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top