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:

  1. <asp:Panel ID="MiPanel" runat="server">
  2.     <asp:CheckBox ID="Op1" runat="server" />
  3.     <asp:CheckBox ID="Op2" runat="server" />
  4.     <asp:CheckBox ID="Op3" runat="server" />
  5.     <asp:CheckBox ID="Op4" runat="server" />
  6. </asp:Panel>
  7. <asp:CustomValidator ID="CustomValidator1"
  8.   runat="server" CssClass="validador" Display="Static"
  9.   ErrorMessage="Por favor seleccione un máximo de 2 opciones."
  10.   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:

  1. Sub ValidaCheckboxes(ByVal sender As Object, ByVal args As ServerValidateEventArgs)
  2.  
  3.     Dim Ctrl As Control
  4.     Dim Chk As CheckBox
  5.     Dim CuentaCtrl As Int16 = 0
  6.     For Each Ctrl In MiPanel.Controls
  7.         If TypeOf (Ctrl) Is CheckBox Then
  8.             Chk = CType(Ctrl, CheckBox)
  9.             If Chk.Checked = True Then
  10.                 CuentaCtrl = CuentaCtrl + 1
  11.             End If
  12.         End If
  13.     Next
  14.  
  15.     If CuentaCtrl  > 2 Then
  16.         args.IsValid = False
  17.     Else
  18.         args.IsValid = True
  19.     End If
  20.  
  21. End Sub

Listo, es todo lo que necesitas. ¡Suerte!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


− 6 = cero