我在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 个字段的值。
我的疑问是:
是否可以将项目从源列表移动到目标列表(在目标 URL 指定的特定文件夹中)?
如果迁移中的此项目包含附件,则可以通过此单个移动步骤自动迁移这些附件吗?(如果可能)
您不必手动执行所有这些操作,因为 SharePoint 已经实现了开箱即用的此方法。您甚至不需要其他方法,只需调用MoveTo
方法即可实现所有这些目标。
sourceItem.File.MoveTo(SPUrlUtility.CombineUrl(destinationList.ParentWeb.Url,destinationList.RootFolder.Url));
当然,其中sourceItem
是您要移动的SPListItem
,destinationList
是应作为 SPListItem 目的地的SPList
。