CheckBoxValidator ønsker ControlToValidate egenskapen til å peke på en avkrysnings, en CheckBoxList, eller enhver annen kontroll som har minst ett barn kontroll
Så dette er alt de CheckBoxValidator behov. å arbeide på serversiden.
To flere styrer tillate oss å utnytte klientsiden validation.They både inkluderer en if (EnableClient) tilstand, slik at vi kan deaktivere klientside validering på design-tiden, som vi gjør med andre validatorer.
Jeg har registrert to egendefinerte (expando) attributter av validator.The første attributt (evaluationfunction) lar rammen vite hvilke Javascript-funksjonen til å påberope for klientsiden validation.The andre en (CheckedCount ) er en spesialegenskap som lagrer greven av utvalgte boksene
beskyttet ride void AddAttributesToRender (HtmlTextWriter forfatter) {base.AddAttributesToRender (forfatter).; if (EnableClientScript) {Page.ClientScript.RegisterExpandoAttribute (this.ClientID, "evaluationfunction", "CodeGolem_CheckBoxValidator", false); Page.ClientScript.
RegisterExpandoAttribute (this.ClientID, "CheckedCount", getCheckedCount () toString (), falske.); }}
Til slutt, her er Javascript-funksjonen, som er registrert på siden i OnPreRender hendelsen
beskyttet ride void OnPreRender (EventArgs e) {base.OnPreRender (e).; if (EnableClientScript) {string onclick = string.Format ("if (this.checked) document.getElementById ('{0}') CheckedCount ++;.. ellers document.getElementById ('{0}') CheckedCount--;", ClientID); foreach (objekt avkrysningsboks i getCheckBoxes ()) {if (boksen er avmerkingsbokser) ((avmerkingsbokser) avmerkingsboks) .
Attributes.Add ("onclick", onclick); if (boksen er listitem) ((listitem) avmerkingsboks) .Attributes.Add ("onclick", onclick); } Page.ClientScript.RegisterClientScriptBlock (getType (), "ValidationFunction", string.Format (@ "-funksjonen CodeGolem_CheckBoxValidator (sender) {{return sender.CheckedCount> = {0} && sender.CheckedCount}}", _minimumChecked, _maximumChecked), ekte); }}
Dette legger en onclick hendelseshåndterer på hver boksen, øker eller reduserer Validator er CheckCount.Validation passerer hvis CheckCount Eiendommen ligger innenfor det tillatte området
.
MERK: containging panel