0

我是 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 charachters ,但是当这个长度大于 255 时,我得到以下异常。无效的选择值。选择字段包含无效数据。请检查值并重试。

有没有其他方法可以将数据复制到 SpFiledChoice,我该如何解决这个问题?请帮我。

4

1 回答 1

0

多次更新,使字符串不超过 - 即值 +=。但是,如果问题是该值不能超过 255,则必须考虑如何进行选择。如果它超过长度并且多次更新值不起作用(并且站点列将具有相同的限制),您可以做下一个最好的事情:

1) 创建一个包含选项的新列表 2) 将目标字段更改为查找 3) 为每个项目相应更新(从查找字段中获取 ID)

这没有限制。

大卫·斯特林

david_sterling@sterling-consulting.com

www.sterling-consulting.com

于 2012-12-09T13:55:08.980 回答