我是sharepoint的新手,我有一个从SpFieldChoice派生的自定义字段类型,我的字段允许用户选择多个值,我需要用新列替换一些旧的自定义列并将旧列中的数据复制到新专栏。旧列还允许用户通过勾选复选框来选择多个值,我有以下代码将数据复制到新字段。
foreach (SPListItem item in list.Items)
{
if (item[oldField.Title] == null)
{
item[newFld.Title] = string.Empty;
item.Update();
}
else
{
string[] itemvalues = item[oldField.Title].ToString().Split(new string[] {";#"}, StringSplitOptions.None);
StringBuilder multiLookupValues = new StringBuilder();
multiLookupValues.Append(";#");
for (int cnt = 0; cnt < (itemvalues.Length) / 2; cnt++)
{
multiLookupValues.Append (itemvalues[(cnt * 2) + 1].ToString() + ";#");
}
item[newFld.Title] = multiLookupValues.ToString();
item.SystemUpdate(false) ;
}
}
此代码正常工作,直到生成的stringbuilder的长度小于255个字符,但是当此长度大于255时,我得到以下异常。 选择值无效。选项字段包含无效数据。请检查该值,然后重试。
有没有其他方法将数据复制到SpFiledChoice,我该如何解决这个问题?请帮帮我。
答案 0 :(得分:0)
多次更新以使字符串不超过 - 即值+ =。但是,如果问题是该值不能超过255,则必须考虑如何进行选择。如果它超过了长度并且多次更新值不起作用(并且站点列具有相同的限制),那么您可以做下一个最好的事情:
1)创建一个包含选项的新列表 2)将目标字段更改为查找 3)相应地更新每个项目(从查找字段中获取ID)
对此没有限制。
David Sterling
david_sterling@sterling-consulting.com
www.sterling-consulting.com