web-dev-qa-db-fra.com

Comment parcourir une liste de cases à cocher et trouver ce qui est coché et non coché

j'essaie de boucler à travers les éléments d'une liste de cases à cocher. si elle est cochée, je veux définir 1 valeur. Sinon, je veux définir une autre valeur. J'utilisais ce qui suit mais cela ne me donne que des éléments cochés:

foreach (DataRowView myRow in clbIncludes.CheckedItems)
{
    MarkVehicle(myRow);
}

TIA!

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

Si la vérification est dans un état indéterminé, cela restera vrai. Vous voudrez peut-être remplacer

if (clbIncludes.GetItemChecked(i))

avec

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

si vous souhaitez inclure uniquement les éléments réellement cochés.

26
Robert C. Barth

Cela donnera une liste des

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

Cela donnera une liste des valeurs des cases sélectionnées (changez la valeur du texte si vous le souhaitez):

var values =  checkboxlist.Items.Cast<ListItem>().Where(n => n.Selected).Select(n => n.Value ).ToList()
32
Contra

Essayez quelque chose comme ceci:

foreach (ListItem listItem in clbIncludes.Items)
{
    if (listItem.Selected) { 
        //do some work 
    }
    else { 
        //do something else 
    }
}
22
JasonS

Je pense que la meilleure façon de le faire est d'utiliser CheckedItems:

 foreach (DataRowView objDataRowView in CheckBoxList.CheckedItems)
 {
     // use objDataRowView as you wish                
 }
2
iviorel

vérifiez-le en utilisant une boucle pour chaque index dans comboxlist.Items[i]

bool CheckedOrUnchecked= comboxlist.CheckedItems.Contains(comboxlist.Items[0]);

Je pense que cela résout votre objectif

1
sameer sharma

Utilisez la méthode GetItemChecked ou GetItemCheckState de CheckBoxList pour savoir si un élément est vérifié ou non par son index.

0
devio