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;
}
}
}
为什么这不会重新填充我的复选框列表的任何想法?任何帮助将不胜感激。
答案 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循环来选择列表项。