在sharepoint中,禁用单个列表项的更新
我想知道的是,当有人编辑一个列表项时,它会通过我的事件代码,当进行更改并点击save时,它会被触发。我不希望任何人能够在列表项仍在处理该请求时编辑该列表项本身。因此,我想知道,在这种情况下,我是否可以禁止其他人编辑单个项目,直到它完成正在执行的操作。不确定我是否完全理解您想要的内容 尝试向列表或内容类型中添加一个字段(如果愿意,可以隐藏),以用作标志。当您输入事件代码时,请确保首先检查标志,如果未设置,请设置标志并执行操作。完成你的任务后,把旗子解开 下面是一些代码来说明。注意,我使用了一个名为“更新”的列。如果不想添加列,也可以使用SPListItem的属性 哦,别忘了在调用SPListItem.Update之前调用DisableEventFireing,然后再调用EnableEventFireing()。为了得到这个,你的手上会有一个非常讨厌的无限循环 .b在sharepoint中,禁用单个列表项的更新,sharepoint,Sharepoint,我想知道的是,当有人编辑一个列表项时,它会通过我的事件代码,当进行更改并点击save时,它会被触发。我不希望任何人能够在列表项仍在处理该请求时编辑该列表项本身。因此,我想知道,在这种情况下,我是否可以禁止其他人编辑单个项目,直到它完成正在执行的操作。不确定我是否完全理解您想要的内容 尝试向列表或内容类型中添加一个字段(如果愿意,可以隐藏),以用作标志。当您输入事件代码时,请确保首先检查标志,如果未设置,请设置标志并执行操作。完成你的任务后,把旗子解开 下面是一些代码来说明。注意,我使用了一个名为
我毫不怀疑比约恩斯的解决方案会奏效,但在实施时必须非常小心。 请。请记住,在您的更新方法中,应该包含一个“finally”来重置标志,无论抛出哪个异常,否则您的列表将永远被锁定:-(
public override void ItemAdding(SPItemEventProperties properties)
{
if (properties.ListItem["updating"].ToString() == "updating")
{
properties.Cancel = true;
properties.ErrorMessage = "Item is currently updating, please try again later";
}
else
{
properties.ListItem["updating"] = "updating";
this.DisableEventFiring();
properties.ListItem.Update();
this.EnableEventFiring();
// do your stuff
properties.ListItem["updating"] = "";
this.DisableEventFiring();
properties.ListItem.Update();
this.EnableEventFiring();
}
}