如何在我的剑道网格的不同页面中对整个数据进行排序?

时间:2013-10-01 05:18:58

标签: kendo-ui kendo-grid

我正在使用剑道。当我对网格进行排序时,它不会对下一页数据进行排序。它仅在第一页上排序。我想在网格中对整个数据进行排序。我该怎么做??

$("#ProductGrid").kendoGrid({
          columns: [
 { field: "ProductID", title: 'Product Id' ,width:50},
 { field: "ProductName", title:  'Product Name' },
 { field: "Price", title: 'Price' },            
 ],
  groupable: true,
  sortable: true,
  pageable: true,
  dataBound: function () {
                this.expandRow(this.tbody.find("tr.k-master-row").first());
            },

  scrollable: true,
  filterable: true,
  dataSource: new kendo.data.DataSource({
  transport: {
       read: "../api/Product/FindByPartyIDForGrid?partyID=" + PartyID

             },
  serverPaging: true,
  serverSorting: true,
  pageSize: 50,
  schema: {
            data: "Data",
            total: "Count"
          }
       })
});

我的服务器端方法

[System.Web.Http.AcceptVerbs("GET", "POST")]
[System.Web.Http.HttpGet]
[ActionName("FindByPartyIDForGrid")]
public Responce FindByPartyIDForGrid(string partyID)
{
    int take = httpRequest["take"] == null ? 10 : int.Parse(httpRequest["take"]);
    int skip = httpRequest["skip"] == null ? 0 : int.Parse(httpRequest["skip"]);
       var content = new ProductBS().FindByPartyID(Convert.ToInt32(partyID));
      if (content != null)
      {
       return new Models.Responce(content.Skip(skip).Take(take).ToArray(), content.Count());
      }
      else
      {
       return new Responce(new Array[0], 0);
      }   
}

2 个答案:

答案 0 :(得分:1)

似乎这不是客户端(kendo)问题。正如我所见,Kendo网格配置正确。在FindByPartyIDForGrid方法中,您需要进行排序并正确返回相关页面。

检查您的服务器逻辑,如果您可以在此处发布,我们可以查看它。

修改 好像你没有处理服务器中的排序,你有两个选择,

1.您可以使用Odata protpcol执行此操作  你可以通过处理sorting yourself

来做到这一点

答案 1 :(得分:0)

发生这种情况是因为您启用了serverSorting。然后你应该自己进行排序。

如果您没有将网格绑定到批量项目,则可以使用客户端排序。只需删除数据源的serverSorting: true选项。