拆分组合字符串以进行checklistbox控制

时间:2015-06-21 22:49:08

标签: c# split checklistbox

RE:Microsoft CRM Online的自定义Web应用程序

我在ASP.NET(C#)Web窗体中编写了一个checklistbox控件,它通过LINQ显示Microsoft CRM Online中的许多项目。

List<string> selDropdown = chkMyItemsHere.Items.Cast<ListItem>()
                .Where(li => li.Selected)
                .Select(li => li.Value)
                .ToList();

string ListBoxValues = string.Join(", ", selDropdown);

这非常有效,我可以将字符串保存到一个字段中(即&#39;字符串值,字符串值&#39;)。

现在,在Page_Load上,我需要从组合字符串中拆分值并勾选checkListbox中的相关复选框。

string[] k = i.LINQFIELD.Split(',');
for (int m = 0; m <= k.Length - 1; m++)
{
    for (int x = 0; x <= chkMyItemsHere.Items.Count; x++)
    {
       if (chkMyItemsHere.Items[x].Value == k[m])
       {
          chkMyItemsHere.Items[x].Selected = true;
       }
     }
}

为什么这不会重新填充我的复选框列表的任何想法?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

在你的代码中,你有这个:

string.Join(", ", selDropdown);

在你没有的代码中,你有这个:

string[] k = i.LINQFIELD.Split(',');

你看到了吗?

作为一个解决方案,我建议你像这样声明一个常量变量:

private const string SPLIT_VARIABLE = ", ";

现在你有了这个:

string.Join(SPLIT_VARIABLE, selDropdown);

string[] k = i.LINQFIELD.Split(SPLIT_VARIABLE);

答案 1 :(得分:0)

修复了如何拆分逗号分隔的字符串 - 如jp2code所建议的那样,以确保每个数组元素中没有多余的空格 - 您还可以使用LINQ根据内容中的内容选择复选框列表中的项目。你的“k”字符串数组:

(from i in chkMyItemsHere.Items.Cast<ListItem>()
             where Array.Exists<string>(k, s => { return i.Value == s; })
             select i).ToList().ForEach(i => i.Selected = true);

这样,您就不必使用嵌套的for循环来选择列表项。