首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SharePoint REST成员资格

SharePoint REST成员资格
EN

Stack Overflow用户
提问于 2015-09-07 10:59:19
回答 2查看 2.2K关注 0票数 0

在列表中有一个类型为SPGroup的列。我希望通过SharePoint REST API获得项目,我只需要SPGroup包含当前用户的项目。网址是多少?谢谢你的建议!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-07 13:53:51

可以在REST查询中使用$expand参数在查询中包含相关的数据实体,但由于SharePoint REST服务实现了OData协议,因此只能在顶级项上调用$filter方法,因此无法在扩展字段上使用。

根据列表包含多少项,我建议您尝试对当前用户以外的其他内容进行筛选,或者获取所有内容并在代码中筛选结果。

REST查询如下所示:

http://sp/_api/web/lists/getbytitle('MyList')/items?$select=Id,Title,Members/Id&$expand=Members,其中Members是要扩展的SPGroup

在返回的每一项中,您将得到以下内容

代码语言:javascript
复制
<content type="application/xml">
   <m:properties>
      <d:Id m:type="Edm.Int32">60</d:Id>
   </m:properties>
</content>

使用成员的Id值。由此,您应该能够编写一些自定义代码,只筛选出包含当前登录用户的项。

票数 1
EN

Stack Overflow用户

发布于 2017-01-19 20:29:49

你仍然可以用好的老式肥皂来做你想做的事,而且不那么头痛。我使用此方法获取分配给用户帐户或用户所属组的任务。

代码语言:javascript
复制
function getAssignedToMe(){

    var viewFields = '<ViewFields><FieldRef Name="ID" /><FieldRef Name="Title" /><FieldRef Name="Created" /><FieldRef Name="FileRef" />'
        +'<FieldRef Name="AssignedTo" /><FieldRef Name="Status" /></ViewFields>';   

    // filter by AssignedTo is current user ID or assigned to the current user's group;
    var camlQuery = '' + 
        '<Query>' + 
            '<Where>' + 
                '<And>' + 
                    '<Or>' + 
                        '<Membership Type="CurrentUserGroups"><FieldRef Name="AssignedTo"/></Membership>' + 
                        '<Eq><FieldRef Name="AssignedTo"/><Value Type="Integer"><UserID/></Value></Eq>' + 
                    '</Or>' + 
                    '<And>' + 
                        '<Neq><FieldRef Name="Status"/><Value Type="Text">Completed</Value></Neq>' + 
                        '<Geq><FieldRef Name="Created" /><Value Type="DateTime"><Today OffsetDays="-60" /></Value></Geq>' + 
                    '</And>' + 
                '</And>' + 
            '</Where>' + 
            '<OrderBy><FieldRef Name="Created" Ascending="TRUE"/></OrderBy>' +
        '</Query>';

    getListItems('/mysite', 'Tasks', viewFields, camlQuery, callback, 50);

    // transform the returned XML to JSON
    function callback(xmlDoc){
        var data = [];
        $(xmlDoc).find('*').filter(function () {
            return this.nodeName.toLowerCase() == 'z:row';
        }).each(function (i, el) {
            // do something with the data
            var id = parseInt($(el).attr('ows_ID'));
            data.push({
                Id: id
            });
            /* ... */
        });
    };

 };

 function getListItems(siteUrl, listName, viewFields, query, callback, rowLimit) {
    if (rowLimit === void 0) { rowLimit = 25; }

    var packet = '<?xml version="1.0" encoding="utf-8"?>' +
        '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
        '<soap:Body>' +
        '<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">' +
        '<listName>' + listName + '</listName>' +
        '<query>' + query + '</query>' +
        '<viewFields>' + viewFields + '</viewFields>' +
        '<rowLimit>' + rowLimit + '</rowLimit>' +
        '</GetListItems>' +
        '</soap:Body>' +
        '</soap:Envelope>';

    var $jqXhr = $.ajax({
        url: siteUrl + '/_vti_bin/lists.asmx',
        type: 'POST',
        dataType: 'xml',
        data: packet,
        headers: {
            "SOAPAction": "http://schemas.microsoft.com/sharepoint/soap/GetListItems",
            "Content-Type": "text/xml; charset=utf-8"
        }
    }).done(function (xmlDoc, status, error) {
        callback(xmlDoc);
    }).fail(function (jqXhr, status, error) {
        callback(null, status + ': ' + error);
    });
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32437025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档