私は 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 にコピーする他の方法はありますか? どうすればこの問題を解決できますか? 私を助けてください。