2

SP2010を使用。2 つのライブラリ (以下のコードではsentApplicationsListsentApplicationsListXml ) を備えた SPWeb を取得しました。1 つのプロセスで、XML ファイルを最初のライブラリから 2 番目のライブラリに移動する必要があるため、次のように記述しました。

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 に表示されると、カスタム コンテンツ タイプではなく、ドキュメントコンテンツ タイプが含まれています。SPFile.MoveTo() が content-type を変更するのはなぜですか? 私のコンテンツ タイプは両方のライブラリでアクティブ化されています。

MoveTo() の後で content-type を元に戻すために、いくつかの行を追加しました。

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