Knockout-Kendo Grid中的服务器分页绑定到viewmodel中的本地(服务器填充的)ko.observableArray属性

时间:2013-03-09 15:20:34

标签: javascript knockout.js kendo-ui single-page-application kendo-grid

我正在使用Knockout-Kendo.js库来获取我的js + HTML5 SPA。在我的viewmodel中,我有一个myItems Knockout Observable Array。我有一个客户端存储库,负责从服务器获取数据并保留它。我希望能够根据对API的POST请求在我的viewmodel中填充myItems,该API将过滤器对象(包含过滤器和分页信息)发送到服务器并返回过滤项目列表。

  • 据我所知,Knockout-Kendo不支持Kendo Grid DataSource。我应该通过data的{​​{1}}属性来设置源代码。我对吗?如果是,我可以在下面的问题中达到要求吗?
  • 如何设置网格选项,以便设置服务器分页的结果总数,页码,顶部,跳过等? (例如,我应该能够根据Kendo Grid的点击页面数量在viewmodel中设置我的过滤器对象,并将其与我的POST请求一起发送给服务器。)
  • 另外,为了能够获得分页的项目总数,我应该以这样的格式从服务器接收JSON数据:dataSource还是有替代方法可以实现这一点?

2 个答案:

答案 0 :(得分:2)

如果你需要在Knockout-Kendo中,你可以直接使用dataSource。如果您使用false或data指定{}选项,然后同时指定dataSource选项,那么它将使用它。

例如,您可以将其绑定为:

<div data-bind="kendoGrid: gridOptions"></div>

使用视图模型:

var grid = {
  data: false,
  dataSource: {
    type: "odata",
    transport: {
      read: "http://demos.kendoui.com/service/Northwind.svc/Orders"
    },
    schema: {
      model: {
        fields: {
          OrderID: {
            type: "number"
          },
          Freight: {
            type: "number"
          },
          ShipName: {
            type: "string"
          },
          OrderDate: {
            type: "date"
          },
          ShipCity: {
            type: "string"
          }
        }
      }
    },
    pageSize: 50,
    serverPaging: true,
    serverFiltering: true,
    serverSorting: true
  },
  height: 250,
  sortable: true,
  pageable: true,
  columns: [{
    field: "OrderID",
    filterable: false
  },
    "Freight", {
    field: "OrderDate",
    title: "Order Date",
    width: 100,
    format: "{0:MM/dd/yyyy}"
  }, {
    field: "ShipName",
    title: "Ship Name",
    width: 200
  }, {
    field: "ShipCity",
    title: "Ship City"
  }]
};

ko.applyBindings({
  gridOptions: grid
});

此处示例:http://jsfiddle.net/rniemeyer/shwrb/

答案 1 :(得分:0)

dataSource:{pageSize:20}像这样指定....如果你只提到pageSize:20就像这样,它不起作用