我正在爲visual share 2010的visual studio編寫一個可視Web部件。此Web部件的全部要點是通過單擊按鈕來更改權限。我能夠訪問權限並將它們輸出到屏幕上。我可以更改我擁有的對象的權限,然後在屏幕上顯示更改的權限。我的問題是,一切完成後,沒有實際的權限被更改。Sharepoint:Web部件以編程方式更改權限,無法獲得更改持久
webpart.TargetLibrary是一個文本字段,在其他地方輸入爲我希望調查的庫的名稱。
SPListCollection docLibs = m_SharePointWeb.GetListsOfType(SPBaseType.DocumentLibrary);
SPDocumentLibrary targetLib = (SPDocumentLibrary)(docLibs[webPart.TargetLibrary]);
SPListItemCollection libFolders = targetLib.Folders;
SPListItem folderItem = libFolders[0];
SPRoleAssignmentCollection folderRoles = folderItem.RoleAssignments;
SPRoleAssignment roleAssign = folderRoles[0];
SPRoleDefinitionBindingCollection spRDBC = roleAssign.RoleDefinitionBindings;
SPRoleDefinition Contribute = spRDBC[0].ParentWeb.RoleDefinitions["Contribute"];
folderItem.RoleAssignments[0].RoleDefinitionBindings.Add(Contribute);
folderItem.Update();
這是一個有點簡化的版本 - 原來有一些for循環和其他代碼做其他事情的各種位。無論如何,通過查看在線,我能夠拼湊出的所有內容,此代碼應將「貢獻」權限添加到第一個文件夾中列表上的第一個角色。正如我所說的那樣,它對當地的物體是這樣做的,但沒有永久的效果。 Update()調用似乎什麼都不做,我不確定它是否在這種情況下。我試過UpdateOverwriteVersion() - 這也沒有做任何事情。對於我可能會做錯的任何建議將不勝感激。
作爲一個便箋,它幾乎不是一個問題,但我忍不住有一種更高效和直接的方式來獲取Web對象,以便我可以通過名稱獲取角色定義。任何關於這個問題的建議也將不勝感激。
編輯:解決方案移動到答案,下面。
您應該發佈您的解決方案作爲答案。 – 2012-03-13 21:24:28
啊。確實。完成。謝謝。 – 2012-03-14 13:13:51