1

私はこれを試しました:

SPFolder folder = ...;
folder.Item["Name"] = newName;
folder.Item.Update();

そして、それは不思議な振る舞いをします。実行すると、例外がスローされます。

 SPException: Cannot complete this action.

ただし、新しい名前の割り当ての後、Update() の前にデバッガーで停止し、folder.Item のプロパティを確認して続行すると、毎回動作します。タイミングの問題ではありません。ローカルウィンドウで見ずにデバッガーで停止しようとしましたが、その時は例外がスローされました。

この質問は同様の解決策を示していますが、SystemUpdate() を使用しても問題ありませんか? SPFolder のプログラムによる名前の変更

4

6 に答える 6

1

名前を変更する必要はありませんが、タイトルは変更してください。そう:

folder.Item[SPBuiltInFieldId.Title] = newName;
folder.Item.Update(); // or SystemUpdate(false)

Update と SystemUpdate の違いは、Update は情報によって変更/変更され、バージョン管理が有効になっている場合はバージョン番号が増加することです。SystemUpdate はこれらを更新しません。

また、SPBuiltInFieldId.Title を使用していることにも注意してください。「タイトル」を使用すると、英語以外のサイトで問題が発生する可能性があるため、これは「タイトル」を使用するよりも優れています。

于 2010-09-10T19:47:43.677 に答える
1
 SPFolder attachfolder = documentLibrary.RootFolder.SubFolders[guid];
            //rename guid to new item id
            attachfolder.Properties[SPBuiltInFieldId.Title.tostring()] = itemID;
            attachfolder.Update();
于 2012-03-22T22:41:54.503 に答える
1

アクション「folder.ParentWeb.AllowUnsafeUpdates = true」の前に追加し、その後に AllowUnsafeUpdates を以前の値に戻してみてください。

于 2013-04-22T12:55:07.383 に答える
0
folder.Item["Name"] = newName;
folder.ParentWeb.AllowUnsafeUpdates = true;
folder.Item.Update();
folder.ParentWeb.AllowUnsafeUpdates = false;

私のためのこのフォーク

于 2013-11-12T10:49:15.893 に答える
0

MoveToメソッドを使用して試すことができます

于 2012-02-14T14:34:11.477 に答える