2013-04-10 62 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())。