当我尝试更新共享点文档库中的项目名称时,出现以下错误。该项目是文档集类型,其默认值是使用 javascript 加载的。在 Item added 事件中,我们使用新更改的项目的名称值进行更新。但是在 item.update() 代码语句中,我收到了以下错误。
文件 CZY14389 在当前日期已被域\用户名修改。
请提供您对解决此问题的意见。
当我尝试更新共享点文档库中的项目名称时,出现以下错误。该项目是文档集类型,其默认值是使用 javascript 加载的。在 Item added 事件中,我们使用新更改的项目的名称值进行更新。但是在 item.update() 代码语句中,我收到了以下错误。
文件 CZY14389 在当前日期已被域\用户名修改。
请提供您对解决此问题的意见。
您不能像这样更改共享点文档的名称。你需要“移动它”。
Item.Update();
Item.File.MoveTo(Item.ParentList.RootFolder.Url + "/" + newFileName, false);
Item.File.Item["FileRef"] = newFileName;
Item.File.Update();
这有时会发生在事件处理程序中。问题是事件处理程序中的更新过程与工作流不同。在用于更新的事件处理程序中,您必须使用以下步骤。不要在工作流程中使用 Item.Update()。
按照步骤:
• 在您的代码之前调用和禁用事件触发:base.EventFiringEnabled = false;
•通过调用 item.systemUpdate(false) 更新您的项目;
•启用事件触发:base.EventFiringEnabled = true;
在您更新项目名称并调用 item.update() 之前,您可以尝试像这样刷新您的项目:
item = item.ParentList.GetItemById(item.ID);
item.name = "xyz";
item.update();
禁用事件触发并调用您的更新代码,不要忘记启用事件触发。
HandleEventFiring handleEventFiring = new HandleEventFiring();
handleEventFiring.DisableHandleEventFiring();
try
{
item.Update();
//if item.Update doesnt work then use(For me item.update worked only on my local not on prod then i used the below)
//item.SystemUpdate(false)
}
finally
{
handleEventFiring.EnableHandleEventFiring();
}
public class HandleEventFiring : SPItemEventReceiver
{
public void DisableHandleEventFiring()
{
//obsolete
//this.DisableEventFiring();
this.EventFiringEnabled = false;
}
public void EnableHandleEventFiring()
{
//obsotete
//this.EnableEventFiring();
this.EventFiringEnabled = true;
}
}