Code van Custom CheckBoxList control waarin maar 1 item geselecteerd kan worden.

De standaard CheckBoxList heeft geen selectionmode property, zoals de Windows.Forms CheckedListBox wel heeft, om aan te geven of een of meerdere items uit de list geselecteerd kunnen worden.

Als je dus wel een CheckBoxList op je pagina wilt waarin maar 1 item aangevinked kan worden dan moet je de CheckBoxList iets aanpassen.

In onderstaand voorbeeld wordt de text van de gekozen item opgeslagen in de viewstate van het control. Zodra er opnieuw een item aangevinked wordt, wordt deze vergeleken met de text in de vieuwstate en indien anders worden alle items gereset en de nieuwe item aangevinked.

Als je dit control gebruikt en je wilt vanuit code een item selecteren dan moet dat dit wel via:
- Setwaarde method( string parameter)
Omdat deze dan ook de string in de viewstate zet.

Code:

public class iPrestoCheckBoxList: CheckBoxList 
    {

        string bewaren = string.Empty ;


        public iPrestoCheckBoxList()
        {
            base.AutoPostBack = true;
            base.SelectedIndexChanged += new EventHandler(MijnCheckedListBox_SelectedIndexChanged);
        }

        public void setWaarde(string waarde)
        {
            base.ViewState["bewaren"] = waarde;
            this.SelectedValue = waarde;
        }

        void MijnCheckedListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty((string)(base.ViewState["bewaren"])))
            {
                if (base.SelectedItem != null)
                    base.ViewState["bewaren"] = base.SelectedItem.Text;
            }
            else
            {
                if (base.SelectedIndex < 0 )
                {
                    base.ViewState["bewaren"] = string.Empty;
                }
                else
                {
                    foreach (ListItem item in base.Items)
                    {
                        if (item.Selected == true && item.Text != (string)base.ViewState["bewaren"])
                        {
                            base.ViewState["bewaren"] = item.Text;
                            break;
                        }
                    }
                }
            }
            base.ClearSelection();
            if(!string.IsNullOrEmpty ((string)base.ViewState ["bewaren"]))
                base.SelectedValue = (string)base.ViewState["bewaren"];
            
        }
    }

{{opmerking.Naam}}:

{{opmerking.OpmerkingText}}

            

Saving your comment....

Naam is verplicht!
Email is verplicht!
Opmerking is verplicht!