En ocasiones puedes tener muchos CheckBoxes
desplegados de tal manera que no te permite crear un CheckBoxList
(por ejemplo, en tablas), y requieres validar que el visitante no ha marcado más de n número de casillas.
Para hacerlo necesitas colocar todos tus CheckBoxes
dentro de un control Panel
para poder iterarlos e ir contando. Puedes implementar la validación con un CustomValidator
.
La página ASP.NET debe tener lo siguiente:
- <asp:Panel ID="MiPanel" runat="server">
- <asp:CheckBox ID="Op1" runat="server" />
- <asp:CheckBox ID="Op2" runat="server" />
- <asp:CheckBox ID="Op3" runat="server" />
- <asp:CheckBox ID="Op4" runat="server" />
- </asp:Panel>
- <asp:CustomValidator ID="CustomValidator1"
- runat="server" CssClass="validador" Display="Static"
- ErrorMessage="Por favor seleccione un máximo de 2 opciones."
- ForeColor="" OnServerValidate="ValidaCheckboxes"></asp:CustomValidator>
Ahí están tus cuatro opciones y tu validador, nota que la función a la que manda llamar el validador se llama ValidaCheckboxes
, la cual debe aparecer en tu código de servidor:
- Sub ValidaCheckboxes(ByVal sender As Object, ByVal args As ServerValidateEventArgs)
- Dim Ctrl As Control
- Dim Chk As CheckBox
- Dim CuentaCtrl As Int16 = 0
- For Each Ctrl In MiPanel.Controls
- If TypeOf (Ctrl) Is CheckBox Then
- Chk = CType(Ctrl, CheckBox)
- If Chk.Checked = True Then
- CuentaCtrl = CuentaCtrl + 1
- End If
- End If
- Next
- If CuentaCtrl > 2 Then
- args.IsValid = False
- Else
- args.IsValid = True
- End If
- End Sub
Listo, es todo lo que necesitas. ¡Suerte!