Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set multiple selected values in asp.net checkboxlist

I have a asp.net checkbox list bound to a linq to sql datasource and when I check the item count of my CheckBoxList on the page load event it is 0. I want to be able to set the selected items on my checkboxlist here but cannot.

The datasource's selected event fires after the page load. If this is the case, how can I set the selected items on my list?

If I set the SelectedValue to a value it only displays the last value as selected instead of all the values which are selected. How can I select multiple values in my checkboxlist in the pageload event?

like image 992
Nicholas Avatar asked Apr 27 '09 11:04

Nicholas


People also ask

How can we store multiple checkbox values in database using ASP NET?

Place your checkboxes in side a panel. Then looping through the controls of type checkbox get the chcked checkbox value as comma separated string. After getting the value as comma separated you can insert it in database.


4 Answers

I know this is an old post but I had the same problem recently.

To select multiple items of a DataBound CheckBoxList, handle the DataBound event and loop through the Items collection setting the Selected property individually on each item as required.

Setting the SelectedValue property of the control only checks the final item.

 foreach (ListItem item in MyCheckBoxList.Items)
 {
     item.Selected = ShouldItemBeSelectedMethod(item.Value);
 }
like image 154
robmzd Avatar answered Oct 11 '22 13:10

robmzd


Nice method I use:

 private void SetCheckBoxListValues(CheckBoxList cbl, string[] values)
        {
            foreach (ListItem item in cbl.Items)
            {
                item.Selected = values.Contains(item.Value);
            }
        }
like image 22
Scott Brightman Avatar answered Oct 11 '22 12:10

Scott Brightman


public void SetValueCheckBoxList(CheckBoxList cbl, string sValues)
        {
            if (!string.IsNullOrEmpty(sValues))
            {                
                ArrayList values = StringToArrayList(sValues);             
                foreach (ListItem li in cbl.Items)
                {
                    if (values.Contains(li.Value))
                        li.Selected = true;
                    else
                        li.Selected = false;                    
                }               
            }
        }

private ArrayList StringToArrayList(string value)
        {
            ArrayList _al = new ArrayList();
            string[] _s = value.Split(new char[] { ',' });

            foreach (string item in _s)
                _al.Add(item);

            return _al;
        }

Thanks, slnavn2000

like image 3
slnavn2000 Avatar answered Oct 11 '22 12:10

slnavn2000


Sounds like a Page Lifecycle - Databinding question.

You should really take a look at (the answers to) this question.

like image 1
Cerebrus Avatar answered Oct 11 '22 11:10

Cerebrus