Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以编程方式重命名Sharepoint目录(SPFolder或SPListItem)?_C#_Asp.net_Sharepoint_Sharepoint 2003 - Fatal编程技术网

C# 如何以编程方式重命名Sharepoint目录(SPFolder或SPListItem)?

C# 如何以编程方式重命名Sharepoint目录(SPFolder或SPListItem)?,c#,asp.net,sharepoint,sharepoint-2003,C#,Asp.net,Sharepoint,Sharepoint 2003,我试过这个: SPFolder folder = ...; folder.Item["Name"] = newName; folder.Item.Update(); 它的行为很神秘。如果我运行它,它会抛出一个异常: SPException: Cannot complete this action. 但是,如果我在新名称分配之后和Update()之前在调试器中停止它,并查看folder.Item的属性,然后继续,它每次都会工作。这不是计时问题,我尝试在调试器中停止它,而不在本地窗口中查看它,

我试过这个:

SPFolder folder = ...;
folder.Item["Name"] = newName;
folder.Item.Update();
它的行为很神秘。如果我运行它,它会抛出一个异常:

 SPException: Cannot complete this action.
但是,如果我在新名称分配之后和Update()之前在调试器中停止它,并查看folder.Item的属性,然后继续,它每次都会工作。这不是计时问题,我尝试在调试器中停止它,而不在本地窗口中查看它,但当时它抛出了一个异常


此问题表示类似的解决方案,但使用SystemUpdate(),这有关系吗

您不需要更改名称,只需要更改标题。 因此:

更新和系统更新之间的区别在于更新将根据信息进行修改/修改,如果启用版本控制,则会增加版本号。SystemUpdate不会更新这些


还要注意,我使用了SPBuiltInFieldId.Title。这比使用“Title”要好,因为“Title”可能会导致非英语网站出现问题。

您不需要更改名称,但需要更改Title。 因此:

更新和系统更新之间的区别在于更新将根据信息进行修改/修改,如果启用版本控制,则会增加版本号。SystemUpdate不会更新这些


还要注意,我使用了SPBuiltInFieldId.Title。这比使用“Title”要好,因为“Title”可能会在非英语网站中引起问题。

您可以尝试使用
MoveTo
方法您可以尝试在
文档库中使用
MoveTo
方法项目(文件夹)的
名称
字段具有
StaticName=FileLeafRef
。所以真正对我有效的是

 SPFolder attachfolder = documentLibrary.RootFolder.SubFolders[guid];
            //rename guid to new item id
            attachfolder.Properties[SPBuiltInFieldId.Title.tostring()] = itemID;
            attachfolder.Update();
folder.Item[SPBuiltInFieldId.FileLeafRef] = "The new name";
folder.Item.Update();

文档库中
项(文件夹)的字段
名称
具有
StaticName=FileLeafRef
。所以真正对我有效的是

folder.Item[SPBuiltInFieldId.FileLeafRef] = "The new name";
folder.Item.Update();

尝试在操作“folder.ParentWeb.AllowUnsafeUpdates=true之前添加
然后将AllowUnsafeUpdates恢复到以前的值。

尝试在操作“folder.ParentWeb.AllowUnsafeUpdates=true”之前添加
folder.Item["Name"] = newName;
folder.ParentWeb.AllowUnsafeUpdates = true;
folder.Item.Update();
folder.ParentWeb.AllowUnsafeUpdates = false;
然后将AllowUnsafeUpdates恢复到以前的值

folder.Item["Name"] = newName;
folder.ParentWeb.AllowUnsafeUpdates = true;
folder.Item.Update();
folder.ParentWeb.AllowUnsafeUpdates = false;
这把叉子是给我的


这个叉子是给我的

对不起,我没有看到它是给SharePoint 2003的。我在2003年没有任何经验,只有2007年和2010年。它可能是这样工作的,但我不确定。对不起,我没有看到它是用于SharePoint 2003的。我在2003年没有任何经验,只有2007年和2010年。可能是这样,但我不确定。