Scenario:
I wanted to copy an existing item to another list. I found a solution here but it didn't work for me fully.
Item I was trying to copy are inside a folder with the list.
Solution:
Solution i found was copying items at the root level. But as my items were inside the folder , I wanted to copy over to new list in same folder. Here's modified code.
Code:
public static SPListItem CopyItem(SPListItem sourceItem, string destinationListName) { //copy sourceItem to destinationList SPList destinationList = sourceItem.Web.Lists[destinationListName]; string folderName = "/" + itemToCopy.Url.Remove(itemToCopy.Url.LastIndexOf('/')); SPListItem targetItem = destinationList.Items.Add(folderName, SPFileSystemObjectType.File); foreach (SPField f in sourceItem.Fields) { if (!f.ReadOnlyField && f.InternalName != "Attachments") { targetItem[f.InternalName] = sourceItem[f.InternalName]; } } //copy attachments foreach (string fileName in sourceItem.Attachments) { SPFile file = sourceItem.ParentList.ParentWeb.GetFile(sourceItem.Attachments.UrlPrefix + fileName); byte[] imageData = file.OpenBinary(); targetItem.Attachments.Add(fileName, imageData); } targetItem.Update(); return targetItem; }Article:
Copying over a SharePoint list from source site to destination site
Copy or move Sharepoint list items using SPExport and SPImport
SPListItem.CopyTo does not copy
2 comments:
Is there any way to copy large number of list items to a SPList through a sandbox solution? I tried using ProcessBatchData; but it fails giving this errortext in output XML string - The operation failed because an unexpected error occurred. (Result Code: 0x80020005)
Any idea?
While there are ways to copy items, but with client object model you will surely face lot of issues. May be you can write a WCF with the main code and call it via jQuery Ajax by passing required parameters.
Post a Comment