beskyttet overstyring bool ControlPropertiesValid () {_controlToValidate = Page.FindControl (ControlToValidate. ); bool isValid = _controlToValidate er CheckBox || _controlToValidate er CheckBoxList || _controlToValidate.Controls.Count> 0; hvis (isValid) _checkBoxes = getCheckBoxes (); tilbage isValid;}
CheckBoxValidator ønsker ControlToValidate ejendom til at pege på et afkrydsningsfelt, en CheckBoxList, eller enhver anden kontrol, der har mindst ét barn kontrol
Så dette er alt, hvad de CheckBoxValidator behov. at arbejde på server-side.
To flere tilsidesætter tillade os at udnytte klientsiden validation.They både omfatter en hvis (EnableClient) tilstand, så vi kan deaktivere validering klientsiden på design-tid, ligesom vi gør med andre validatorer.
Jeg har tilmeldt to custom (Expando) attributter af validator.The første attribut (evaluationfunction) lader rammen vide, hvilke javascript funktion til at påberåbe sig til klientsiden validation.
The anden (CheckedCount ) er en brugerdefineret egenskab, der gemmer optællingen af udvalgte afkrydsningsfelter
beskyttet override void AddAttributesToRender (HtmlTextWriter forfatter) {base.AddAttributesToRender (forfatter).; hvis (EnableClientScript) {Page.ClientScript.RegisterExpandoAttribute (this.ClientID, "evaluationfunction", "CodeGolem_CheckBoxValidator", false); Page.ClientScript.RegisterExpandoAttribute (this.ClientID, "CheckedCount", getCheckedCount () toString (), falsk.
); }}
Endelig her er den javascript funktion, der er registreret på siden i OnPreRender begivenhed
beskyttet override void OnPreRender (EventArgs e) {base.OnPreRender (e).; hvis (EnableClientScript) {string onclick = string.Format ("hvis (this.checked) document.getElementById ('{0}') CheckedCount ++;.. ellers document.getElementById ('{0}') CheckedCount--", ClientID); foreach (objekt afkrydsningsfeltet getCheckBoxes ()) {if (afkrydsningsfelt er CheckBox) ((CheckBox) checkboks) .Attributes.Add ("onclick", onclick); hvis (afkrydsningsfeltet er listitem) ((listitem) checkboks) .
Attributes.Add ("onclick", onclick); } Page.ClientScript.RegisterClientScriptBlock (getType (), "ValidationFunction", string.Format (@ "funktionen CodeGolem_CheckBoxValidator (afsender) {{returnere sender.CheckedCount> = {0} && sender.CheckedCount}}", _minimumChecked, _maximumChecked), rigtigt); }}
Dette tilføjer en onclick event handler på hver afkrydsningsfelt, forøgelse eller decrem