21

我正在尝试遍历复选框列表的项目。如果选中,我想设置一个值。如果没有,我想设置另一个值。我正在使用以下内容,但它只给了我检查的项目:

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

6 回答 6

32

这将给出一个选定的列表

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

这将给出所选框的值列表(如果需要,更改文本的值):

var values =  checkboxlist.Items.Cast<ListItem>().Where(n => n.Selected).Select(n => n.Value ).ToList()
于 2010-09-27T12:53:08.440 回答
27
for (int i = 0; i < clbIncludes.Items.Count; i++)
  if (clbIncludes.GetItemChecked(i))
    // Do selected stuff
  else
    // Do unselected stuff

如果检查处于不确定状态,这仍将返回 true。您可能想要更换

if (clbIncludes.GetItemChecked(i))

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

如果您只想包括实际检查的项目。

于 2008-12-28T00:13:58.057 回答
23

尝试这样的事情:

foreach (ListItem listItem in clbIncludes.Items)
{
    if (listItem.Selected) { 
        //do some work 
    }
    else { 
        //do something else 
    }
}
于 2008-12-27T21:58:49.763 回答
2

我认为最好的方法是使用CheckedItems

 foreach (DataRowView objDataRowView in CheckBoxList.CheckedItems)
 {
     // use objDataRowView as you wish                
 }
于 2013-06-09T13:27:46.373 回答
1

对中的每个索引使用循环检查它comboxlist.Items[i]

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

我认为它解决了你的目的

于 2012-06-30T07:10:12.833 回答
0

使用 CheckBoxList 的 GetItemChecked 或 GetItemCheckState 方法可通过其索引找出是否已检查项目。

于 2008-12-27T21:57:47.707 回答