Запрещение нескольким пользователям редактировать один и тот же элемент списка в sharepoint 2010 - PullRequest
3 голосов
/ 11 мая 2011

Мы разработали пользовательскую веб-часть с несколькими элементами управления и развернули ее на сайте sharepoint 2010, который принимает входные данные от пользователя, и как только пользователь нажимает кнопку отправки, все значения сохраняются в списке sharepoint, причем один из столбцов является гиперссылкой , Когда пользователь нажимает на эту гиперссылку, через строку запроса он снова перенаправляется в ту же форму.

Я хотел бы знать, щелкнул ли пользователь по этой гиперссылке для внесения изменений в эту форму, можем ли мы предотвратить внесение изменений в эту форму другим пользователем?

Пожалуйста, поделитесь своими мыслями по этому поводу.

Ответы [ 3 ]

4 голосов
/ 12 мая 2011

Если я правильно понимаю ваш вопрос, вы хотите запретить другим пользователям редактировать элемент списка, если кто-то уже редактирует его. Это можно сделать с помощью какой-то блокировки, возможно, хранящейся в самом списке, но эта стратегия имеет два важных недостатка:

  • Учтите, что первый пользователь щелкает ссылку, чтобы перейти в режим редактирования, и мы блокируем элемент списка. Если пользователь просто закрывает свой браузер без дальнейших действий (или его сеть перестает работать, или его система падает, или его компьютер умирает), элемент останется заблокированным , а всех остальных будет не позволяйте редактировать его до тех пор, пока мы не выпустим его каким-либо образом (обычно по истечении некоторого времени ожидания или поработав с ним вне веб-части).

  • Наша веб-часть будет применять эту блокировку, но никакой другой код этого не сделает, включая сам SharePoint (через другую веб-часть или из кода на стороне сервера) и весь внешний мир (через объектную модель клиента). Таким образом, любой заданный элемент списка будет по-прежнему подвержен изменениям, пока пользователь его редактирует, и SPListItem.Update() все равно вызовет исключение, если это произойдет.

Лучшей стратегией было бы использовать собственный механизм блокировки SharePoint, проверяя элемент, когда первый пользователь переключается в режим редактирования, и, конечно, разрешая ссылку, только если элемент еще не извлечен.

Однако это не решает проблему длительной блокировки (, когда проверяем ли мы элемент обратно, если пользователь закрывает свой браузер?). Кроме того, CheckOut () реализован с помощью SPFile , а не SPListItem , что означает, что для использования этой функции необходимо использовать библиотеку документов.

В целом, я не думаю, что есть действительно удобное для пользователя решение вашей проблемы: вы либо позволяете своим пользователям редактировать один и тот же элемент одновременно и разбираться с последствиями (выигрывает только один из них), или Вы не можете, и вы могли бы оставить старые замки вокруг (все проигрывают).

1 голос
/ 12 мая 2011

Используйте проверку и проверку, а затем создайте рабочий процесс, который снимает блокировки, заблокированные на более чем установленный период времени ...

0 голосов
/ 11 мая 2011

Вы можете использовать механизм извлечения / регистрации в SharePoint.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...