Ici, je vais vous expliquer comment coder un réutilisable, universelle, le contrôle CheckBoxValidator
Je tiens à appeler «universelle», car il est en mesure de valider. :
Le code source complet est fixé au bas de cet article.
Donnons un oeil à une partie du code.
Tout d'abord , l'CheckBoxValidator doit hériter de BaseValidator et mettre en œuvre au moins la méthode la plus importante d'un validateur doit: EvaluateIsValid.The CheckBoxValidator expose également MinimumChecked et MaximumChecked biens à louer nous définissons au moment du design combien de cases sont autorisés à être sélectionné
.
CheckBoxValidator public class: BaseValidator {private contrôle _controlToValidate; _checkBoxes de liste privée; private int _minimumChecked = 1; private int _maximumChecked = Int.
MaxValue; public int MinimumChecked {get {return _minimumChecked; } Set {_minimumChecked = valeur; }} Public int MaximumChecked {get {return _maximumChecked! = Int.MaxValue? _maximumChecked: 0; } Set {_maximumChecked = valeur! = 0? valeur: Int.MaxValue; }} Protected override bool EvaluateIsValid () {int count = getCheckedCount (); retourner comptage> = _minimumChecked && count}}
Comme vous pouvez le voir, la fonction d'évaluation obtient un nombre de cases cochées et vérifie si elle est dans le permis range.
Here est la méthode getCheckedCount ():
int privé getCheckedCount () {int count = 0; foreach (objet case à cocher dans _checkBoxes) {bool; si (case à cocher est ListItem) selected = ((ListItem) checkBox) .selected; si (case à cocher est case à cocher) selected = ((case à cocher) checkBox) .checked; si (sélectionné) comptage ++; } Nombre de retour;}
Vous pouvez remarquer la liste des _checkBoxes effectivement ne contient pas seulement des cases à cocher. Il est une liste d'objets, et peut contenir des objets CheckBox, ainsi que ListItem objects.
This est de permettre le validateur pour gérer à la fois case et CheckBoxList objects.You peut trouver les getCheckBoxes () dans le fichier source jointe.
Il existe une autre méthode, le validateur doit remplacer: ControlPropertiesValid.The BaseValidator appelle cette méthode pour vérifier si la propriété ControlToValidate est corre