2

使用 SP2010。我得到了一个带有两个库的 SPWeb(下面的代码中的sentApplicationsListsentApplicationsListXml)。在一个过程中,我需要将 XML 文件从第一个库移动到第二个库,所以我写了这个:

for (int i = 0; i < sentApplicationsList.Items.Count; i++)
{
    SPFile file = sentApplicationsList.Items[i].File;
    if (file != null && file.Name.EndsWith(".xml"))
    {
        string newUrl = sentApplicationsListXml.RootFolder.Url + "/" + file.Name;
        file.MoveTo(newUrl, true);
    }
}

当该项目出现在 sentApplicationsListXml 中时,它具有Document内容类型,而不是我的自定义内容类型。为什么 SPFile.MoveTo() 会更改内容类型?我的内容类型在两个库中都被激活。

为了在 MoveTo() 之后更改内容类型,我添加了几行:

string newUrl = sentApplicationsListXml.RootFolder.Url + "/" + file.Name;
SPContentType contentType = file.Item.ContentType;
file.MoveTo(newUrl, true);
SPFile movedFile = web.GetFile(newUrl);
movedFile.Item[SPBuiltInFieldId.ContentType] = contentType;
movedFile.Item[SPBuiltInFieldId.ContentTypeId] = contentType.Id;
movedFile.Item.SystemUpdate();

这没有任何区别。

4

0 回答 0