VicenteSabuco.com

Validar DropDownList con RequiredFieldValidator

En ocasiones, mientras programas en .net, piensas en las cosas que hacías mal al principio o de forma enrevesada. El objeto de este post, validar dropdownlist, es un claro ejemplo de ello.

Existen varias formas de validar un DropDownList en caso de que queramos obligar al usuario a establecer un valor. La primera forma que se nos suele ocurrir es asociarlo a un RequiredFieldValidator como hacemos con otros controles como el TextBox. Pero cual es nuestra sorpresa cuando vemos que en este caso no funciona ya que aunque no hayamos seleccionado ningún valor en el DropDownList, por defecto está seleccionado el primero, el validador no lo detecta como un campo vacío y lo da como válido.

Llegados a este punto, se nos suele ocurrir cosas como utilizar un CustomValidator. Que si definimos la validación por parte del servidor no queda bien ya que el usuario ve como cuando se han validado todos los campos en el lado cliente y envía el formulario vuelve a recibir un nuevo error desde el servidor. Esto se puede mejorar definiendo una función javascript que nos valide el DropDownList desde el lado del cliente y notificando el error antes del envío de los datos al servidor.

Después de esta lista de maneras poco recomendadas de realizar la validación, por las formas o el tiempo utilizado viene la forma más correcta a mi parecer de validar un DropDownList. Volvemos al primer intento con el RequiredFieldValidator y simplemente definimos un InitialValue en el validador. Esto define el valor “vacío” del DropDownList y hace que si este valor está seleccionado, el RequiredFieldValidator interprete que el usuario no ha elegido y se muestre el correspondiente error. El código quedaría de la siguiente manera:

<asp:DropDownList id="valores" runat="server">
               <asp:ListItem Value="">No seleccionado</asp:ListItem>
               <asp:ListItem Value="1">Valor 1</asp:ListItem>
               <asp:ListItem Value="2">Valor 2</asp:ListItem>
               <asp:ListItem Value="3">Valor 3</asp:ListItem>
   </asp:DropDownList>
<asp:RequiredFieldValidator id="RFVvalores"
   ControlToValidate="valores" InitialValue="" runat="server"/>

Básicamente tenemos el DropDownList con 4 opciones, la primera de ellas es la inicial y así se lo estamos indicando al RequiredFieldValidator con el parámetro InitialValue igual al Value del item por defecto. Esta forma es rápida por las pocas líneas de código necesarias y por realizar la validación desde el cliente.

[Total:1    Promedio:1/5]

Artículos relacionados

Sobre el autor Ver todos los posts Web del autor

Jose Emeterio

Consultor SEO y experto en analítica Web, se algo de Wordpress, fotografía y tecnología en general. Cuando quiero desconectar suelo viajar y cocinar.