2010-07-15 65 views
6

我建立一个复选框列表:遍历一个复选框列表

<asp:CheckBoxList ID="CheckBoxes" DataTextField="Value" DataValueField="Key" runat="server"></asp:CheckBoxList> 

并试图获得所选项目的价值的:

List<Guid> things = new List<Guid>(); 
foreach (ListItem item in this.CheckBoxes.Items) 
{ 
    if (item.Selected) 
     things.Add(item.Value); 
    } 
} 

我得到的errror

“ 'System.Collections.Generic.List.Add(System.Guid)' 的最佳重载方法匹配有一些无效的争论发言:“

+0

如果选择从列表中的项目,要将此相同的项目添加到列表的东西。这是你想要做的吗? – jdecuyper 2010-07-15 22:02:59

+0

这是正确的 – Neil 2010-07-15 23:58:05

回答

9

'东西'列表除Guid值外。你应该item.value转换为一个GUID值:

List<Guid> things = new List<Guid>(); 
foreach (ListItem item in this.CheckBoxes.Items) 
{ 
    if (item.Selected) 
    things.Add(new Guid(item.Value)); 
} 
5

ListItem.ValueSystem.String型的,和你想将它添加到一个List<Guid>。您可以尝试:

things.Add(Guid.Parse(item.Value)); 

只要字符串值可解析为Guid,这将工作。如果不清楚,你会想要更加小心,并使用Guid.TryParse(item.Value)

0

如果您的列表的Add方法不接受GUID的(看到错误消息),但不接受“item.value”,然后我猜项目.value不是一个GUID。

试试这个:

... 
things.Add(CTYPE(item.value, GUID)) 
...