拆分用于清单框控件的组合字符串



RE: 用于在线Microsoft CRM的定制Web应用程序

我在 ASP.NET (C#) Web 窗体中编写了一个清单框控件,该控件通过 LINQ 显示来自 CRM Online Microsoft的许多项。

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

这非常有效,我能够将字符串保存到一个字段中(即"字符串值,字符串值")。

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

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

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

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

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);
修复了

拆分逗号分隔字符串的方式(如 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 循环来选择列表项。

相关内容

  • 没有找到相关文章

最新更新