如何遍历复选框列表并找到已选中和未选中的内容?

Posted

技术标签:

【中文标题】如何遍历复选框列表并找到已选中和未选中的内容?【英文标题】:How to loop through a checkboxlist and to find what's checked and not checked? 【发布时间】:2010-09-28 13:40:23 【问题描述】:

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

foreach (DataRowView myRow in clbIncludes.CheckedItems)

    MarkVehicle(myRow);

【问题讨论】:

asp316:WebForms 还是 WinForms? (围绕它们各自的 CheckBoxList 控件的 API 完全不同。) 【参考方案1】:

这将给出一个选定列表

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()

【讨论】:

我得到他们两个的错误..第一个解决方案我得到错误'不能隐式转换类型'System.Collections.Generic.List ' 到 'System.Web.UI.WebControls.ListItem'' 和第二个我在运行时得到错误 名称'values' 在当前上下文中不存在【参考方案2】:
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)

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

【讨论】:

使用这个效果很好。如何获取选中复选框的值/值成员? clbIncludes.GetItemChecked(i) 对我来说不是一个有效的方法,但我只是将它替换为 clbIncludes.Items[i].Selected【参考方案3】:

试试这样的:

foreach (ListItem listItem in clbIncludes.Items)

    if (listItem.Selected)  
        //do some work 
    
    else  
        //do something else 
    

【讨论】:

这是winform。因此,当我尝试引用 listitem 时,它想要引用 Web 控件。我尝试使用 listviewitem 并收到错误“无法将“System.Data.DataRowView”类型的对象转换为“System.Windows.Forms.ListViewItem”。想法 bill martin 如果它是 winform 然后删除你的标签,上面写着 .net。当我意识到 GetItemChecked 方法仅适用于 winforms 时,我花了一些时间试图弄清楚为什么您的解决方案对我不起作用(使用 .net)。【参考方案4】:

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

 foreach (DataRowView objDataRowView in CheckBoxList.CheckedItems)
 
     // use objDataRowView as you wish                
 

【讨论】:

我没有找到 CheckBoxList 的 CheckedItems 属性。【参考方案5】:

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

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

我认为它解决了你的目的

【讨论】:

【参考方案6】:

使用 CheckBoxList 的 GetItemChecked 或 GetItemCheckState 方法来确定一个项目是否通过其索引进行检查。

【讨论】:

以上是关于如何遍历复选框列表并找到已选中和未选中的内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用codeigniter将选中和未选中复选框的值更新为表

发布选中和未选中的复选框

Jquery 复选框选中和未选中事件

JQUERY:获取选中和未选中复选框的 id

【QML】复选框 CheckBox

循环检查复选框并计算每个选中或未选中的复选框