Sharepoint 2010 博客 - 按类别排序休息查询

Sharepoint 2010 Blog - Order rest query by Category

我在 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

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

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


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

There is one important note here:

Since Category field is a multiple choice field value, it is assumed that only one category could be specified per post.

For that purpose FirstCategoryTitle property is introduced which represent the title of first category in post item. This property is used > for sorting items

例子

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;
}