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:
-
<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:
VB.NET:
-
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!