2010-06-17 19 views
3

我構建了一個自定義SharePoint列表,以編程方式調整每個列表項的權限。這部分應用程序的工作原理是清除列表項中的所有權限,並向我想授予讀或授予權限的人員添加權限。我相信這部分應用程序是正確的:在列表項上選擇「管理權限」我可以在「權限」列表中看到有關列表項的相應用戶和角色。SharePoint權限:具有Contribute更改的用戶無法更改他們未創建的列表項目?

但是,我驚訝地發現只有提交列表項的用戶才能成功編輯該項。我會用以下兩個用戶來描述我所看到的:UserA和UserB。用戶A提交了列表項。 UserB正試圖在權限分配後(手動或編程)編輯相同的列表項。

用戶B不能編輯列表項:

  • 用戶B可以看到項目工具欄上的編輯項目鏈接。
  • UserB可以點擊鏈接並看到EditForm.aspx。
  • 當UserB進行更改並按下提交時,UserB遇到SharePoint「Access Denied」錯誤頁面。
  • 列表項更新的事件處理程序不會觸發。
  • 手動提升UserB的權限以包含完全控制不會影響上述行爲。

相比之下,用戶A遇到更可預測的行爲:

  • 用戶A可以看到項目工具欄上的編輯項目鏈接。
  • UserA可以點擊鏈接,並會看到EditForm.aspx。
  • UserA提交時,所做的更改將持續存在,並且用戶將重定向回項目列表。
  • 事件處理程序在用戶提交後觸發。

這給我留下了幾個問題:

  1. 這是對 的SharePoint,我設法 俯瞰預期的行爲?
  2. 我可以做些什麼來允許UserB修改列表項?

回答

2

你可以檢查你的清單設置> Adcanced設置>物品等級權限,看看那裏有什麼編輯訪問設置? 當你處理你的事件時,這應該設置爲所有項目?

+0

很棒!我忘了這個設置。 有沒有辦法在裝訂到特徵或自定義列表定義的事件處理程序中設置此設置? – antik 2010-06-22 16:34:01

+1

好!在自定義列表定義這是由SecurityBits控制的更多信息請參閱這裏http://msdn.microsoft.com/en-us/library/dd587243(office.11​​).aspx 爲了做到這一點編程您需要設置ReadSecurity屬性和WriteSecurity(請參閱http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.splist.readsecurity.aspx這篇文章http://msdn.microsoft.com /en-us/library/microsoft.sharepoint.splist.writesecurity。aspx) 希望這有助於! – Renzo 2010-06-23 10:42:26