La validación en la página de carga trata los controles de campo de SharePoint como vacío

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/13378

  •  16-10-2019
  •  | 
  •  

Pregunta

En un formulario de elemento de lista personalizado particular que estoy cometiendo para mi aplicación web WSS 3.0, debo validar la página cuando se cargue, de modo que cualquier error que cometa el usuario de un guardado anterior se anoten de inmediato. Actualmente lo hago usando Page.Validate() en el OnLoad método.

Con todo el TextBox y RadioButtonList Controles que popa (también en la carga de la página), simplemente puedo llenarlos antes de activar un montón de InputFormCustomValidator Controles en la página. Para esos controles, todo está claro y los campos completos correctamente no están marcados como inválidos.

Pero para el UserField y DateTimeField Controles, los tratará como vacíos para la validación de carga de la página, ya sea que tengan o no datos en ellos. Esto ocurre tanto cuando se usa el real UserField y DateTimeField Controles que obtienen datos automáticamente en función de la consulta de ID de elemento y al usar el subyacente PeopleEditor y DateTimeControl Controles que prepulso en la carga de la página como los cuadros de texto.

Una vez que ha habido un retroceso que requiere validación, la validación reconocerá adecuadamente el contenido de esos campos.

¿Hay algo que pueda hacer para evitar esto? no marcado como inválido en la carga de la página? ¿Debo ejecutar la validación en un método diferente al OnLoad? Personalmente me gustaría mantener los campos como UserField y DateTimeField En lugar de usar los controles subyacentes, pero eso me restringe a no poder definir cuando se poblan. Si la solución es mover la prepoblación de control a una etapa anterior en el tiempo, puedo conformarme con eso, pero sigue siendo preferible no tener que hacerlo si se puede solucionar de otra manera.

¿Fue útil?

Solución

¿Ha intentado llamar a EnsureChildControls () antes del .validate ()? Además, si está creando/cargando controles dinámicamente, eso generalmente se realiza en el evento CreateChildControls () en lugar del Onload (), ya que la mayoría de los controles personalizados deben participar en los eventos antes de Load ().

Otros consejos

¿Quizás intente mover page.validate () llamar al evento Onperender?

Licenciado bajo: CC-BY-SA con atribución
scroll top