Если я правильно понимаю ваш вопрос, вы хотите запретить другим пользователям редактировать элемент списка, если кто-то уже редактирует его. Это можно сделать с помощью какой-то блокировки, возможно, хранящейся в самом списке, но эта стратегия имеет два важных недостатка:
Учтите, что первый пользователь щелкает ссылку, чтобы перейти в режим редактирования, и мы блокируем элемент списка. Если пользователь просто закрывает свой браузер без дальнейших действий (или его сеть перестает работать, или его система падает, или его компьютер умирает), элемент останется заблокированным , а всех остальных будет не позволяйте редактировать его до тех пор, пока мы не выпустим его каким-либо образом (обычно по истечении некоторого времени ожидания или поработав с ним вне веб-части).
Наша веб-часть будет применять эту блокировку, но никакой другой код этого не сделает, включая сам SharePoint (через другую веб-часть или из кода на стороне сервера) и весь внешний мир (через объектную модель клиента). Таким образом, любой заданный элемент списка будет по-прежнему подвержен изменениям, пока пользователь его редактирует, и SPListItem.Update()
все равно вызовет исключение, если это произойдет.
Лучшей стратегией было бы использовать собственный механизм блокировки SharePoint, проверяя элемент, когда первый пользователь переключается в режим редактирования, и, конечно, разрешая ссылку, только если элемент еще не извлечен.
Однако это не решает проблему длительной блокировки (, когда проверяем ли мы элемент обратно, если пользователь закрывает свой браузер?). Кроме того, CheckOut () реализован с помощью SPFile , а не SPListItem , что означает, что для использования этой функции необходимо использовать библиотеку документов.
В целом, я не думаю, что есть действительно удобное для пользователя решение вашей проблемы: вы либо позволяете своим пользователям редактировать один и тот же элемент одновременно и разбираться с последствиями (выигрывает только один из них), или Вы не можете, и вы могли бы оставить старые замки вокруг (все проигрывают).