Hola amigos de Geeks, Revisando la entrada de Marc Rubiño referente a Como Validar un ListBox (CustomoValidator), me acorde de lo tedioso que es la parte de validación y cuando estaba empezando lo que era validar un DropDownList.
Mostrare tres ejemplos de como validar este control de forma sencilla.
- Validar DropDownList con datos manuales
En este caso, vamos a validar con datos ingresados manualmente.
1: <asp:DropDownList id="fecha" runat="server">
2: <asp:ListItem>--------</asp:ListItem>
3: <asp:ListItem >01/08</asp:ListItem>
4: <asp:ListItem >02/08</asp:ListItem>
5: <asp:ListItem >03/08</asp:ListItem>
6: <asp:ListItem >04/08</asp:ListItem>
7: <asp:ListItem >05/08</asp:ListItem>
8: <asp:ListItem >06/08</asp:ListItem>
9: <asp:ListItem >07/08</asp:ListItem>
10: <asp:ListItem >08/08</asp:ListItem>
11: <asp:ListItem >09/08</asp:ListItem>
12: <asp:ListItem >10/08</asp:ListItem>
13: <asp:ListItem >11/08</asp:ListItem>
14: <asp:ListItem >12/08</asp:ListItem>
15: </asp:DropDownList>
Y ahora con el RequiredFieldValidator hacemos lo siguiente.
1: <asp:RequiredFieldValidator id="rfvFecha"
2: ControlToValidate="fecha" ErrorMessage="Seleccione Fecha.
3: " Display="Static" InitialValue="--------" runat="server"/>
Y la respectiva imagen.
2. Validar DropDownList con RequiredFieldValidator
En este ejemplo, vamos a validar con un RequiredFieldValidator pero en este caso será con una fuente de datos.
1: <asp:DropDownList ID="DropDownList1" runat="server"
2: DataSourceID="SqlDataSource1" DataTextField="ProductName"
3: DataValueField="ProductName" AppendDataBoundItems="True">
4: <asp:ListItem>Seleccione un producto</asp:ListItem>
5: </asp:DropDownList>
6: <asp:SqlDataSource ID="SqlDataSource1" runat="server"
7: ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
8: SelectCommand="SELECT [ProductName] FROM [Alphabetical list of products]">
9: </asp:SqlDataSource>
El RequiredFieldValidator quedaría de la siguiente forma.
1: <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
2: ErrorMessage="Seleccione un producto."
3: ControlToValidate="DropDownList1" InitialValue="Seleccione un producto"/>
La respectiva imagen.
3. Validar DropDownList con CustomValidator y JavaScript
En nuestro ejemplo final, validaremos con un CustomValidator y JavaScript.
1: <asp:DropDownList ID="DropDownList1" runat="server"
2: DataSourceID="SqlDataSource1" DataTextField="ProductName"
3: DataValueField="ProductName" AppendDataBoundItems="True">
4: </asp:DropDownList>
5: <asp:SqlDataSource ID="SqlDataSource1" runat="server"
6: ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
7: SelectCommand="SELECT [ProductName] FROM [Alphabetical list of products]">
8: </asp:SqlDataSource>
Algo diferente que tiene de nuestro anterior ejemplo es que no agregamos el campo donde dice «Seleccione el producto» en el diseñador, pero igual tiene la propiedad AppendDataBoundItems=»True», lo que haremos es hacerlo mediante código.
La función JavaScript seria la siguiente, como observaran nada complicado.
1: <script type="text/javascript">
2: function ValidaDDL(source, arguments) {
3: if (arguments.Value < 1) {
4: arguments.IsValid = false;
5: }
6: else {
7: arguments.IsValid = true;
8: }
9: }
10: </script>
Ahora el CustomValidator
1: <asp:CustomValidator ID="CustomValidator1" runat="server"
2: ClientValidationFunction="ValidaDDL" ControlToValidate="DropDownList1"
3: ErrorMessage="Selecione un produrcto." ValidateEmptyText="True">
4: </asp:CustomValidator>
Para terminar la línea de código pendiente.
1: DropDownList1.Items.Insert(0, new ListItem("Seleccione un producto", "0"));
La imagen de muestra.
Para tener en cuenta.
- Si usas el RequiredFieldValidator y agregas un nuevo campo, para que no aparezca un dato de una seleccionado, tener en cuenta que el valor de la propiedad InitialValue=»» Debe ser igual al texto que colocaste en ese campo agregado.
- Con CustomValidator puedes usar funciones JavaScript y hacer el mismo trabajo que con RequiredFieldValidator, pero puedes enriquecer el JavaScript y darle mas funcionalidad, ya es cuestión de gustos.
Bueno espero que les sea de utilidad.
Romny