Как я могу программно переместить SPListItem из списка источников в список адресатов (в определенную папку списка)? - PullRequest
0 голосов
/ 28 мая 2019

Я довольно новичок в 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. Могу ли я переместить элемент из источникаlist to destination list (в определенной папке, указанной целевым URL)?

  2. Если этот элемент в миграции содержит вложения, эти вложения могут быть автоматически перенесены этим единственным шагом перемещения?(если это возможно)

1 Ответ

1 голос
/ 29 мая 2019

Вам не нужно делать все это вручную, поскольку в SharePoint этот метод уже реализован «из коробки». Вам даже не нужен дополнительный метод, вы можете достичь всего этого, вызвав метод MoveTo.

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

Где, конечно, sourceItem si SPListItem, который вы хотите переместить, а destinationList - это SPList, который должен служить пунктом назначения для SPListItem.

...