2013-04-10 32 views
1

我正在嘗試使用JavaScript對象模型來檢索列表級別的用戶/組的列表及其權限。到目前爲止,我有這返回一個成員對象,但我不能得到任何關於該成員的信息。當我嘗試使用rAssignment.get_member()。get_id()或rAssignment.get_member()。get_title()時,出現錯誤。使用javascript(ecmascript)獲取列表的用戶/組權限

 //Get List Permissions 
     function getListPerms() { 
      var clientContext = new SP.ClientContext(); 
      var siteColl = clientContext.get_site(); 
      var site = clientContext.get_web(); 
      listSecurableObject = site.get_lists().getByTitle($("[name='ListSlct']").val()); 
      listRoleAssignments = listSecurableObject.get_roleAssignments(); 
      clientContext.load(listRoleAssignments); 
      clientContext.executeQueryAsync(Function.createDelegate(this, this.getListPerms_onQuerySucceeded),Function.createDelegate(this, this.getListPerms_onQueryFailed)); 
     } 
     function getListPerms_onQuerySucceeded() { 
      var listPerms=""; 
      listPerms += '<table border="1">'; 
      listPerms += '<tr>'; 
      listPerms += '<td align="center">ID</td>'; 
      listPerms += '</tr>'; 
      var listPermsEnumerator = this.listRoleAssignments.getEnumerator(); 
      while (listPermsEnumerator.moveNext()) { 
       var rAssignment = listPermsEnumerator.get_current(); 
       listPerms += '<tr>'; 
       listPerms += '<td align="center">' + rAssignment.get_member() + '</td>'; 
       listPerms += '</tr>'; 
      } 
      listPerms += '</table>'; 
      document.getElementById('listPermsTable').innerHTML = listPerms; 
     } 
     function getListPerms_onQueryFailed(sender, args) { 
      alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
     } 
+0

它返回錯誤「錯誤:該屬性或字段尚未初始化,尚未請求它或請求尚未執行,可能需要明確請求。」 ...你在Google上搜索過嗎?因爲它給了我那個線程:http://sharepoint.stackexchange.com/questions/30828/the-property-or-field-has-not-been-initialized-it-has-not-been-requested-or-the – AymKdn 2013-04-11 13:18:03

+0

是的,我嘗試了,我試圖明確要求ID和標題,但它仍然拋出相同的錯誤。 – AdvaComp 2013-04-12 14:02:21

回答

2

試着改變你的clientContext.load()函數調用如下:

clientContext.load(listSecurableObject, 'Include(RoleAssignments, RoleAssignments.Include(Member))'); 

現在在getListPerms_onSucceeded()方法,你應該能夠通過listSecurableObject.get_roleAssignments枚舉(),並獲得成員類似於你已經在做的事情(儘管你可能想使用rAssignment.get_member()。get_loginName())。