CheckBoxValidator haluaa ControlToValidate omaisuus osoittamaan valintaruudun, CheckBoxList, tai muu ohjaus, jossa on ainakin yksi lapsi ohjaus.
Niin, tämä on kaikki CheckBoxValidator tarpeisiin työskennellä palvelinpuolen.
Kaksi ohitukset avulla voimme hyödyntää client-side validation.They sisältävät molemmat jos (EnableClient) kunnossa, jotta voimme poistaa client-side validointi Design-aikaan, kuten teemme muiden validators.
Olen rekisteröitynyt kaksi valinnaista (expando) attribuutteja on validator.The ensimmäinen määrite (evaluationfunction) avulla puitteet tietää, mitä JavaScript-toiminto vedota client-side validation.The toinen (CheckedCount ) on mukautettu ominaisuus, joka tallentaa määrä valittujen valintaruutujen.
suojattu ohittaa mitätön AddAttributesToRender (HtmlTextWriter kirjailija) {base.AddAttributesToRender (kirjoittaja); jos (EnableClientScript) {Page.ClientScript.RegisterExpandoAttribute (this.ClientID, "evaluationfunction", "CodeGolem_CheckBoxValidator", epätosi); Page.
ClientScript.RegisterExpandoAttribute (this.ClientID, "CheckedCount", getCheckedCount (). ToString (), epätosi); }}
Lopuksi tässä JavaScript-toiminto, rekisteröity sivun sisällä OnPreRender tapahtuma.
suojattu ohittaa mitätön OnPreRender (EventArgs e) {base.OnPreRender (e); jos (EnableClientScript) {string onclick = string.Format ("jos (this.checked) document.getElementById ({0} '). CheckedCount ++, muuten document.getElementById ({0}').
CheckedCount--;", ClientID); foreach (objekti valintaruutu getCheckBoxes ()) {jos (valintaruutu on valintaruudun) ((valintaruudun) valintaruutu) .Attributes.Add ("onclick" onclick); jos (valintaruutu on listitem) ((listitem) valintaruutu) .Attributes.Add ("onclick" onclick); } Page.ClientScript.RegisterClientScriptBlock (getType () "ValidationFunction", string.Format (@ "-toiminto CodeGolem_CheckBoxValidator (lähettäjä) {{palata sender.CheckedCount> = {0} && sender.
CheckedCount}}", _minimumChecked, _maximumChecked), totta); }}
Tämä lisää onclick tapahtumankäsittelijänä kunkin valintaruutu, monesko tai decrementing Validator n CheckCount.Validation onnistuu, jos CheckCount omaisuus on sallituissa rajoissa.
HUOMAUTUS: containging paneeli voi myös sisältävät sekoitus valintaruudun ja CheckBoxList valvo