Aqui eu vou explicar como codificar um reutilizável, controle universal, CheckBoxValidator
Eu gosto de chamá-lo de "universal", porque é capaz de validar:.
O código fonte completo está anexado na parte inferior deste artigo.
Vamos dar uma olhada em algumas parte do código.
Em primeiro lugar, o CheckBoxValidator tem que herdar de BaseValidator e implementar, pelo menos, o método mais importante de um validador precisa: EvaluateIsValid.The CheckBoxValidator também expõe MinimumChecked e MaximumChecked propriedades para vamos definir em tempo de design quantas caixas estão autorizados a ser selecionado
classe pública CheckBoxValidator:. BaseValidator {_controlToValidate controle privado ; _checkBoxes lista Privada; int privado _minimumChecked = 1; private int _maximumChecked = int.
MaxValue; public int MinimumChecked {get {return _minimumChecked; } Set {_minimumChecked = value; }} Public int MaximumChecked {get {return _maximumChecked! = Int.MaxValue? _maximumChecked: 0; } Set {_maximumChecked = valor! = 0? valor: int.MaxValue; }} Protected override bool EvaluateIsValid () {int count = getCheckedCount (); retornar count> = _minimumChecked && count}}
Como você pode ver, a função de avaliação recebe uma contagem de caixas de seleção selecionados e verifica se ele está dentro do range.
Here permitido é o método getCheckedCount ():
int getCheckedCount privado () {int count = 0; foreach (objeto checkBox em _checkBoxes) {bool; if (checkBox é ListItem) selecionado = ((ListItem) checkBox) .selected; if (checkBox é CheckBox) selecionado = ((CheckBox) checkBox) .checked; if (selecionado) count ++; } Contagem de retorno;}
Você pode notar a lista _checkBoxes na verdade não contém apenas caixas de seleção. É uma lista de objetos, e pode conter objetos de caixa de seleção, bem como ListItem objects.
This é permitir que o validador para lidar com ambos CheckBox e CheckBoxList objects.You pode encontrar o método getCheckBoxes () no arquivo de origem em anexo.
Há um outro método validador deve substituir: ControlPropertiesValid.The BaseValidator chama esse método para verificar se a propriedade ControlToValidate está definido corretamente
protected override bo