如何以编程方式将 SPListItem 从源列表移动到目标列表(移动到列表的特定文件夹中)?

How can I programatically move an SPListItem from a source list to a destination list (into a specific folder of the list)?

我是 SharePoint 的新手(我正在使用 SharePoint 2013)并且遇到以下问题:

我在源网站上有一个 源列表(一个 SPList),我必须将其项目移动到 目标网站上的目标列表(另一个SPList)。

所以基本上我必须将一些 SPListItem 从列表移动到两个不同网站上的另一个列表。

更复杂的是,目标列表包含基于迁移中项目的日期字段的文件夹(例如:如果日期是:2019/05/28,它将在目标列表中创建以下文件夹像这样 2019 --> 05 --> 28 必须放置这个 SPListItem)。

我知道我可以做这样的事情:

private static void copyAttachments(SPListItem sourceItem, SPList sourceAttachList, SPList destAttachList, string destUrl)
{
    // Create the destination item for the attachments:
    SPListItem destAttachItem = null;

    string recNumber = sourceItem[Arxeia6Fields.NumeroProtocollo].ToString();
    DateTime recDate = (DateTime)sourceItem[Arxeia6Fields.DataProtocollo];

    /*
     * Add an item in a specific server-relative URL of the folder where the list item should be created.
     * The new list item represents a file.
     */
    destAttachItem = destAttachList.AddItem(destUrl, SPFileSystemObjectType.File);
    string title = recNumber + "/" + recDate.Year.ToString();
    destAttachItem["Title"] = title;
    destAttachItem["Numero protocollo"] = title;

}

使用此代码,我正在创建向目标列表添加一个新项目(名为 destAttachList 指定 destUrl 表示确切的文件夹这个列表放项目的地方(我从前面的流程步骤中获得了这个信息)。然后我简单地使用我正在迁移的源列表项目的值设置目标列表中这个项目的 2 个字段的值。

我的疑惑是:

  1. 我可以将项目从源列表移动到目标列表(在目标指定的特定文件夹中 URL)吗?

  2. 如果迁移中的此项包含附件,这些附件可以通过这一步自动迁移吗? (如果可能的话)

您不必手动执行所有这些操作,因为 SharePoint 已经实现了这种开箱即用的方法。你甚至不需要额外的方法,你应该能够通过调用 MoveTo 方法来实现所有这些事情。

sourceItem.File.MoveTo(SPUrlUtility.CombineUrl(destinationList.ParentWeb.Url,destinationList.RootFolder.Url));

当然,sourceItem 是您要移动的 SPListItemdestinationList 是应作为 SPListItem 目标的 SPList