2010-05-04 103 views
0

這是我正在處理的內容。 我有兩個列表:授予其他列表中項目的用戶權限

  1. 列用戶和分配給用戶的列項目。
  2. (一個庫):所有項目的列表。

我想知道,在第一個列表(如此添加一個用戶和一個項目)中創建的每一行,如何授予用戶對第二個庫中項目引用的權限(項目圖書館)。 實施例: ProjectLibrary:

  • PROJECT1
  • Project2的
  • 項目3

第一列表:

  • USER1 PROJECT1
  • USER1項目2
  • user2的項目2
  • user2的項目3
  • 用戶3項目3

現在我想給每個用戶的權限,看看他分配給這樣,當他打開第三種形式的項目,充滿了項目的組合框會只顯示他擁有權限的項目。

非常感謝!

+0

操作系統?編程語言/環境? – 2010-05-04 07:04:04

+0

在Sharepoint中,使用nintex工作流程 – Nomz 2010-05-04 07:05:57

回答

0

據我所知沒有在Sharepoint中的某些項目上設置權限的標準方式。只在整個列表中。如果你想過濾組合框 - 你需要在代碼中實現自定義窗體(應用程序頁面)和過濾器組合。

+0

在網絡啓用組合框中,你不能實現一個過濾器,你必須使用下拉列表:( – Nomz 2010-05-04 07:22:00

+0

)你可以使用ExtJs組合或jQuery自動完成或其他不同的東西,並使用HttpHadler(*。ashx文件)爲組合提供過濾器數據。它最適合我 – wassertim 2010-05-04 07:39:44

+0

Im新到這個,所以我真的不知道你在說什麼..你能解釋多一點嗎? – Nomz 2010-05-04 07:48:23

0

在SharePoint 2007中支持項目級權限。

您可以創建一個列表事件處理程序(SPItemEventReceiver)。每次更改/添加用戶項目時,處理程序都可以更新相應的項目項目。

public class EventHanlder: SPItemEventReceiver 
{ 
    public override void ItemAdded(SPItemEventProperties properties) 
    { 
     // collection user and project information from the item being updated. 
     SPListItem item = properties.ListItem; 
     SPUser user = new SPFieldUserValue(item.Web, item["UserFieldName"] as string).User; 
     int projectId = new SPFieldLookupValue(item["ProjectFieldName"]).Id; 

     // create role assignment for the user on the user item. 
     SPRoleAssignment ra = new SPRoleAssignment(user); 
     SPRoleDefinition rd = item.Web.RoleDefinitions.GetByType(SPRoleType.Reader); 
     ra.RoleDefinitionBindings.Add(rd); 
     ra.Update(); 

     // get the project item and update the role assignments. 
     SPList projectList = // retrieve project list here... 
     SPListItem projectItem = projectList.GetItemById(projectId);   
     projectItem.RoleAssignments.Add(ra); 
    } 
} 

這只是示例代碼。我不是100%確定SPField *** Value的產品是否如此。

現在我想讓每個用戶都能看到他分配的項目,這樣當他打開第三個表單時,填充項目的組合框將只顯示他有權訪問的項目。

這應該在查找字段中自動完成,因爲只有用戶具有權限的項目纔會顯示。

+0

謝謝!!!!!! – Nomz 2010-05-06 11:05:44