De CheckBoxValidator wil het pand ControlToValidate te wijzen op een CheckBox, een CheckBoxList, of elke andere controle met ten minste één kind controle
Dus, dit is alles wat de CheckBoxValidator behoeften. om te werken aan de server-side.
Twee andere overrides ons toelaten om client-side validation.They benutten beide een if (EnableClient) staat, dus we kunnen client-side validatie uitschakelen op design-time, zoals we doen met andere validators.
Ik heb me geregistreerd twee aangepaste (Expando) attributen van de validator.The eerste attribuut (evaluationfunction) laat het kader weten welke javascript functie te roepen voor client-side validation.The tweede (CheckedCount ) is een aangepaste eigenschap die de telling van de geselecteerde vakjes slaat
beschermd override leegte AddAttributesToRender (HtmlTextWriter schrijver) {base.AddAttributesToRender (schrijver).; if (EnableClientScript) {Page.ClientScript.RegisterExpandoAttribute (this.ClientID, "evaluationfunction", "CodeGolem_CheckBoxValidator", false); Page.ClientScript.
RegisterExpandoAttribute (this.ClientID, "CheckedCount", getCheckedCount () ToString (), vals.); }}
Tot slot, hier is de JavaScript-functie, geregistreerd op de pagina binnen de OnPreRender evenement
beschermd override leegte OnPreRender (EventArgs e) {base.OnPreRender (e).; if (EnableClientScript) {koord onclick = String.Format ("if (this.checked) document.getElementById ('{0}') CheckedCount ++;.. anders document.getElementById ('{0}') CheckedCount--;", ClientID); foreach (object selectievakje getCheckBoxes ()) {if (selectievakje is CheckBox) ((CheckBox) checkbox) .Attributes.
Add ("onclick", onclick); if (selectievakje is ListItem) ((ListItem) checkbox) .Attributes.Add ("onclick", onclick); } Page.ClientScript.RegisterClientScriptBlock (GetType (), "ValidationFunction", String.Format (@ "functie CodeGolem_CheckBoxValidator (zender) {{return sender.CheckedCount> = {0} && sender.CheckedCount}}", _minimumChecked, _maximumChecked), true); }}
Dit voegt een onclick event handler op elk vakje, het verhogen of verlagen van de validator CheckCount.Validation gaat als het goed CheckCount binnen het toegestane bereik
NB:.
De containging panel kan ook bevat een mix v