gpt4 book ai didi

asp.net - 防止多个用户在 Sharepoint 2010 中编辑同一个列表项

转载 作者:行者123 更新时间:2023-12-01 11:57:07 29 4
gpt4 key购买 nike

我们开发了一个具有多个控件的自定义 Web 部件,并部署在接受用户输入的 Sharepoint 2010 站点上,一旦用户单击提交按钮,所有值都将存储在 SharePoint 列表中,其中一列是超链接.当用户点击这个超链接时,他将通过查询字符串再次重定向到相同的表单。

我想知道如果用户点击了这个超链接来编辑这个表单,我们是否可以避免其他用户对这个表单进行更改?

请分享您对此的看法。

最佳答案

如果我对您的问题的理解正确,您想要阻止其他用户编辑列表项(如果有人已经在编辑它)。这可以使用某种锁来完成,可能存储在列表本身中,但该策略存在两个重要缺陷:

  • 假设第一个用户点击链接切换到编辑模式,我们锁定列表项。如果用户只是关闭了他的浏览器而没有进行任何进一步的操作(或者他的网络出现故障,或者他的系统崩溃,或者他的计算机死机),该项目将保持锁定,并且其他人 将被阻止编辑它,直到我们以某种方式发布它(通常在超时后,或者通过在 web 部件之外修改它)。

  • 我们的 Web 部件将强制执行该锁定,但没有其他代码执行此操作,包括 SharePoint 本身(通过另一个 Web 部件或来自服务器端代码)和整个外部世界(通过客户端对象模型)。因此,任何给定的列表项在用户编辑时仍然容易发生更改,如果发生这种情况,SPListItem.Update() 仍会引发异常。

更好的策略是使用 SharePoint 自己的锁定机制,方法是在第一个用户切换到编辑模式时 checkout 项目,当然,只有在项目尚未 checkout 时才启用链接。

但是,这并没有解决挥之不去的锁问题(什么时候如果用户关闭浏览器,我们要重新检入该项目?)。另外,CheckOut()SPFile 实现, 不是 SPListItem ,这意味着您必须使用文档库才能从该功能中受益。

总而言之,我认为您的问题没有真正用户友好的解决方案:您要么让您的用户同时编辑同一项目并处理后果(只有其中一个获胜),要么你不这样做,你可能会留下陈旧的锁(每个人都会输)。

关于asp.net - 防止多个用户在 Sharepoint 2010 中编辑同一个列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5969735/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com