【问题标题】:Sharepoint 2010 Blog - Order rest query by CategorySharepoint 2010 博客 - 按类别排序休息查询
【发布时间】:2015-05-20 23:23:01
【问题描述】:

我在 Sharepoint 2010 上创建了一个博客,并希望通过 REST 查询列表以进行报告。我想按默认字段类别(内部名称 PostCategory)对列表进行排序。不幸的是,这是一个多选字段,因此简单的 "?$orderby=Category" 不起作用。我也尝试过扩展类别,但这也不起作用。

有没有机会,我可以使用休息来订购列表?选择一个以上的类别呢?是否可以按第一类排序,然后是第二类,依此类推?

如果无法使用 REST,那么在 JSON 中排序呢?我使用一个小的 javascript,将列表置于报告格式中。我可以在 JSON 结果中订购吗?

这是一个例子:

// Create REST-API URL
var strURL = "<REST-URL>";

// Get information from REST-API and create html output
$.getJSON(strURL, function(data) {
        <Create output>
    };

// Append to webpart
$('#<WebPartTitle>').append($(html));

编辑:我也发布了这个问题 here,因为它发生在 sharepoint 中

【问题讨论】:

    标签: json rest sharepoint sharepoint-2010


    【解决方案1】:

    Category 字段(PostCategory 内部名称)是一个多选字段,在 SharePoint REST 中支持将$orderby 查询选项应用于此字段类型。

    但您可以使用 JavaScript 对返回的项目进行排序。


    以下示例演示如何通过Category 字段对Posts 进行排序。

    这里有一个重要的注意事项:

    由于 Category 字段是一个 multiple 选择字段值,它是 假设每个帖子只能指定一个类别

    为此,引入了FirstCategoryTitle 属性 表示文章中第一个类别的标题。该属性用于 > 对项目进行排序

    示例

    var endpointUrl = 'http://contoso.intranet.com/blog/_vti_bin/listdata.svc/Posts?$expand=Category';
    
    $.getJSON(endpointUrl, function(data) {
       var items  = data.d.results.map(function(item){
           item.FirstCategoryTitle = (item.Category.results.length > 0 ? item.Category.results[0].Title : '');   //get first category
           return item;
       });
       items.sort(postComparer);   //sort by category
       items.forEach(function(item){
         console.log(item.Title);    
       });
    
    });
    
    function postComparer(x,y) {
      return x.FirstCategoryTitle > y.FirstCategoryTitle;
    }
    

    【讨论】:

    • 很好,成功了!我不得不处理语言差异,但之后它立即起作用。因为我不太喜欢 javascript,所以我不知道它是如何工作的,尤其是函数 postComparer。但它表明,javascript 是多么强大,我也试图弄清楚这一点 :-) 太糟糕了,它不能直接使用 REST 工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 2010-12-04
    • 2011-09-30
    相关资源
    最近更新 更多