Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to loop through a checkboxlist and to find what's checked and not checked?

I'm trying to loop through items of a checkbox list. If it's checked, I want to set a value. If not, I want to set another value. I was using the below, but it only gives me checked items:

foreach (DataRowView myRow in clbIncludes.CheckedItems)
{
    MarkVehicle(myRow);
}
like image 721
Bill Martin Avatar asked Dec 27 '08 21:12

Bill Martin


4 Answers

This will give a list of selected

List<ListItem> items =  checkboxlist.Items.Cast<ListItem>().Where(n => n.Selected).ToList();

This will give a list of the selected boxes' values (change Value for Text if that is wanted):

var values =  checkboxlist.Items.Cast<ListItem>().Where(n => n.Selected).Select(n => n.Value ).ToList()
like image 148
Contra Avatar answered Nov 13 '22 14:11

Contra


for (int i = 0; i < clbIncludes.Items.Count; i++)
  if (clbIncludes.GetItemChecked(i))
    // Do selected stuff
  else
    // Do unselected stuff

If the the check is in indeterminate state, this will still return true. You may want to replace

if (clbIncludes.GetItemChecked(i))

with

if (clbIncludes.GetItemCheckState(i) == CheckState.Checked)

if you want to only include actually checked items.

like image 24
Robert C. Barth Avatar answered Nov 13 '22 14:11

Robert C. Barth


Try something like this:

foreach (ListItem listItem in clbIncludes.Items)
{
    if (listItem.Selected) { 
        //do some work 
    }
    else { 
        //do something else 
    }
}
like image 23
JasonS Avatar answered Nov 13 '22 14:11

JasonS


I think the best way to do this is to use CheckedItems:

 foreach (DataRowView objDataRowView in CheckBoxList.CheckedItems)
 {
     // use objDataRowView as you wish                
 }
like image 2
iviorel Avatar answered Nov 13 '22 14:11

iviorel