ASP.NET如何用逗号分隔的字符串选择复选框列表项

时间:2016-03-01 14:37:30

标签: c# asp.net

我有一个checkedlistBox cblHobbies

StringBuilder hobbies = new StringBuilder(string.Empty);
foreach (ListItem li in cblHobbies.Items) {
    if (li.Selected) {
        hobbies.Append(li).Append(", ");
    }
}
string hobby = hobbies.ToString().TrimEnd(' ').TrimEnd(',');

我将业余爱好存储在SQL Server数据库中作为Varchar(MAX)。

当用户编辑他的个人资料时,我希望所有的爱好都已被选中。

我的问题是如何从逗号分隔列表有效中选择checklistbox项目? (关于迭代次数)

1 个答案:

答案 0 :(得分:3)

总结我的评论:

  • 您可以使用以下可读的单行代码而不是StringBuilder - 循环:

    string hobby = String.Join(", ", cblHobbies.Items.Cast<ListItem>()
                                               .Where(i=> i.Selected));
    
  • 永远不要在数据库中的一个值中存储多个信息。而是将每个选定的项目存储在其自己的记录中。所以这个逗号分隔的字符串不属于那里。规范化您的数据库。

    • 还有更多
    • 允许更轻松的查询
    • 避免损坏数据
    • 等。 ...

但是,你不是在进行微观优化吗?如果您已从数据库中读取值,则可以使用简单循环来选择它们。这非常有效。

string hobby = GetHobbyFromDB();
string[] hobbies = hobby.Split(new []{", "}, StringSplitOptions.None);

foreach (ListItem li in cblHobbies.Items)
    li.Selected = hobbies.Contains(li.Text);