6

I am building a checkbox lists:

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

And trying to get the value's of the selected items:

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

I get the errror

"The best overloaded method match for 'System.Collections.Generic.List.Add(System.Guid)' has some invalid arguments "

4

3 回答 3

8

“事物”列表不包括 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));
}
于 2010-07-15T22:05:55.070 回答
4

ListItem.Value是 type System.String,并且您正在尝试将其添加到List<Guid>. 你可以试试:

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

只要字符串值可解析为Guid. 如果不清楚,您需要更加小心并使用Guid.TryParse(item.Value).

于 2010-07-15T22:03:30.583 回答
0

如果您的 List 的 Add 方法确实接受 GUID(请参阅错误消息),但不接受“item.value”,那么我猜 item.value 不是 GUID。

尝试这个:

...
things.Add(CTYPE(item.value, GUID))
...
于 2010-07-15T22:19:58.627 回答