2013-05-15 148 views
1

我的页面上有一个asp:CheckboxList,我需要获取选中复选框的值。在复选框列表控件中获取复选框的值

所以我有一个linq查询,然后我循环但我发现没有办法检索与个别复选框相关联的值。

这里是我的代码:

 Dim checkboxValues = cblmyCheckboxes.Controls.OfType(Of CheckBox)().Where(Function(c) c.Checked) 

     For Each c As CheckBox In checkboxValues 
      Response.Write(c.Value) 
     Next 

我如何获得价值?

感谢

+0

运行代码时会发生什么?出于好奇,为什么LINQ? – Tim

+0

您是否为您的复选框设置了值? – Darren

+0

是的值被设置,我得到一个错误,说价值是不是CheckBox的成员 – SkyeBoniwell

回答

1

你的复选框列表包含ListItem而不是复选框。所以cblmyCheckboxes.Items是ListItemCollection

真的,更快,更简单的方法是:

For Each li as ListItem in cblmyCheckboxes.Items 
     If (li.Selected) Then 
      Dim XX = li.Value 
      '' Do something with Value 
     End If 
Next 

使用LINQ你有效地通过复选框循环列出的项目(在你的LINQ功能的背景(这是无论如何是错误的),然后还你For Each再次循环 - 还不如干脆做一个...

2

您需要使用Selected,而不是Checked

var selectedValues = (CheckBoxList1.Items.Cast<ListItem>() 
.Where(i => i.Selected) 
.Select(i => i.Value)) 
.ToList(); 

Dim selectedValues = (CheckBoxList1.Items.Cast(Of ListItem)() 
.Where(Function(i) i.Selected) 
.[Select](Function(i) i.Value)) 
.ToList()