2012-12-07 16 views
0

我是新來的sharepoint,我有一個派生自SpFieldChoice的自定義字段類型,我的字段允許用戶選擇多個值,我有要求用一些舊的自定義列替換新列,並將舊列中的數據複製到新列。舊列還允許用戶通過勾選複選框來選擇多個值,我有以下代碼將數據複製到新字段。以編程方式將數據複製到SpFieldChoice字段的錯誤SharePoint 2010

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,我該如何解決這個問題?請幫幫我。

回答

0

多次執行更新,使字符串不超過 - 即值+ =。但是,如果問題是價值不能超過255,那麼你必須考慮你是如何做選擇的。如果超過長度並且多次更新值不起作用(並且站點列將具有相同的限制),則可以做下一件最好的事情:

1)創建一個新的列表,選項 2)將目標字段更改爲查找 3)相應地更新每個項目(從查找字段中提取ID)

對此沒有限制。

大衛·斯特林

[email protected]

www.sterling-consulting.com

+0

感謝大衛,但由於我是新到SharePoint我不明白的第三部分,你可以請詳細說明代碼? – Parikshit

相關問題