kolmapäev, 21. detsember 2016

Märkeruudu ärakaotamine CheckBoxListi grupeerimisel

ASP.NET CheckBoxList komponendil mõnikord vaja nimekirja grupeerida erinevatel põhjustel


Kogu trikk põhineb CSS3 kasutamisel, kuna see võib tekitada segadusi projekti piirides, siis mõtekas kasutada "inline CSS", näiteks vajaliku userControli sees

<style>
    #CheckBoxListOtsinguMajad input:disabled {
        display: none;
    }
</style>
reegli mõju piirame CheckBoxListOtsinguMajad komponendi nende osadega, mille input:disabled, ehk märkeruuduga, sättida tuleb ka  ClientIDMode="Static" , et ASP.NET komponendi ID-d ei muudaks ja CSS3 reegel komponendi tuvastaks

asp:CheckBoxList ID="CheckBoxListOtsinguMajad" ClientIDMode="Static"
Kui nüüd CheckBoxListi ListItem seada Enabled=False, siis vastavale reale CSS reegel rakendub ja kuna display: none; siis märkeruut kaob ära


protected void CheckBoxListOtsinguMajad_PreRender(object sender, EventArgs e)
    {
        foreach (ListItem it in this.CheckBoxListOtsinguMajad.Items)
        {
            if (it.Value.Equals("0")) //grupeeringu tunnus
            {
                it.Enabled = false;
                it.Selected = false;
                it.Attributes.Add("style", "font-size:14px;height:16px;font-weight:bold;");
            }
        }
    }

 Grupeeringu rida aga võiks teistest tugevamalt eristada, täiendame stiili
 it.Attributes.Add("style", "font-size:14px;height:16px;font-weight:bold;");