A continuación voy a explicar cómo codificar un reutilizable, control universal CheckBoxValidator
Me gusta llamarlo "universal", ya que es capaz de validar. :
El código fuente completo se adjunta en la parte inferior de este artículo.
Vamos a dar un vistazo a alguna parte del código.
En primer lugar , la CheckBoxValidator tiene que heredar de BaseValidator e implementar al menos el método más importante un validador necesita: EvaluateIsValid.The CheckBoxValidator también expone MinimumChecked y MaximumChecked propiedades que vamos a definir en tiempo de diseño de cómo se permiten muchas casillas de verificación para seleccionar
.
CheckBoxValidator clase pública: BaseValidator {private _controlToValidate Control; _checkBoxes Lista privadas; private int _minimumChecked = 1; privada int _maximumChecked = int.
MaxValue; public int MinimumChecked {get {return _minimumChecked; } Set {_minimumChecked = valor; }} Public int MaximumChecked {get {return _maximumChecked! = Int.MaxValue? _maximumChecked: 0; } Conjunto {_maximumChecked = valor! = 0? Valor: int.MaxValue; }} Protected override bool EvaluateIsValid () {int count = getCheckedCount (); volver contador> = _minimumChecked && count}}
Como puede ver, la función de evaluación obtiene un recuento de casillas seleccionadas y verifica si está dentro de la range.
Here permitido es el método getCheckedCount ():
int getCheckedCount privada () {int cuenta = 0; foreach (casilla de verificación objeto en _checkBoxes) {bool; si (casilla está ListItem) selected = ((ListItem) casilla de verificación) .Selected; si (casilla está CheckBox) selected = ((CheckBox) casilla de verificación) .Checked; si (seleccionado) Recuento ++; } Recuento de retorno;}
Se puede notar la lista _checkBoxes realidad no contiene sólo casillas de verificación. Es una lista de objetos, y puede contener objetos CheckBox, así como ListItem objects.
This es permitir que el validador de manejar tanto CheckBox y CheckBoxList objects.You puede encontrar los getCheckBoxes () en el archivo de origen adjunto.
Hay otro método el validador debe anular: ControlPropertiesValid.The BaseValidator invoca este método para verificar si la propiedad ControlToValidate