0

我是 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,该destUrl表示此列表中放置项目的确切文件夹(我从上一个流程步骤中获得了此信息)。然后我只需设置目标列表中此项的 2 个字段使用我正在迁移的源列表项的值。

我的疑问是:

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

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

4

1 回答 1

1

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

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

当然,您想要移动的sourceItemsi应该作为 SPListItem 的目的地。SPListItemdestinationListSPList

于 2019-05-29T14:34:06.960 回答