Перемещение элемента библиотеки документов из одной папки в другую, включая историю версий, с помощью c # - PullRequest
0 голосов
/ 26 апреля 2011

Используя объектную модель Sharepoint 2007, я искал пример в C # для перемещения элемента из одной библиотеки документов в другую на том же сервере и сохранения истории версий (т. Е. Объектов SPListItemVersion) и метаданных (папки имеют одинаковыетипы контента и т. д.).

1 Ответ

1 голос
/ 10 мая 2011

Мне удалось выполнить то, что я хотел сделать, с помощью следующего кода:

    /// <summary>  
    /// Adds item to archive  
    /// </summary>  
    /// <param name="item">Item to add</param>  
    /// <param name="destination">Archive path</param>  
    /// <param name="destination">web site of archive</param>  
    /// <returns>Result of arhivation process</returns>  
    public static string ArchiveItem(SPListItem item, string destination, SPWeb web)
    {
        // Save main meta information for later use:  
        var author = item.File.Author;
        var modifiedBy = item.File.ModifiedBy;
        var modified = item.File.TimeLastModified;

        var created = item.File.TimeCreated;
        // Get destination filename:  
        var destinationFile = destination + "/" + item.File.Name;
        // Copy the item and set properties:  
        var coppiedFile = web.GetFolder(destination).Files.Add(destinationFile, item.File.OpenBinary(), author, modifiedBy, created, modified);
        coppiedFile.Item["Created"] = created;
        coppiedFile.Item["Modified"] = modified;
        // Save changes, UpdateOverwriteVersion causes object to save without saving a new version.
        coppiedFile.Item.UpdateOverwriteVersion();
        // If moving is enabled, delete original item:  
        item.Delete();

        return coppiedFile.ServerRelativeUrl;
    }
...