【问题标题】:Loop through a checkbox list遍历复选框列表
【发布时间】:2011-03-16 16:23:11
【问题描述】:

我正在构建一个复选框列表:

<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);
    }
}

我得到了错误

"最佳重载方法匹配 'System.Collections.Generic.List.Add(System.Guid)' 有一些无效的参数“

【问题讨论】:

  • 如果选择了列表中的一个项目,您希望将同一项目添加到事物列表中。这是你想要做的吗?

标签: asp.net foreach checkboxlist


【解决方案1】:

“事物”列表不包含 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));
}

【讨论】:

    【解决方案2】:

    ListItem.Value 的类型为 System.String,而您正尝试将其添加到 List&lt;Guid&gt;。你可以试试:

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

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

    【讨论】:

      【解决方案3】:

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

      试试这个:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-28
        • 1970-01-01
        • 2022-01-20
        • 2011-12-21
        • 2014-11-22
        • 1970-01-01
        • 1970-01-01
        • 2021-06-20
        相关资源
        最近更新 更多