2

js + HTML5 SPA にKnockout-Kendo.jsライブラリを使用しています。私のビューモデルには、myItemsKnockout Observable Array があります。サーバーからデータを取得して保持するクライアント側のリポジトリがあります。myItemsフィルター オブジェクト (フィルターとページング情報を含む) をサーバーに送信し、フィルター処理された項目のリストを返す API への POST 要求に基づいてビューモデルを入力できるようにしたいと考えています。

  • 私が知る限り、Knockout-Kendo は Kendo Grid DataSource をサポートしていません。dataプロパティinstesd ofを介してソースを設定する必要がありdataSourceます。私は正しいですか?はいの場合、以下の質問の要件を達成できますか?
  • サーバーページングの結果の総数、ページ番号、トップ、スキップなどを設定するようにグリッドのオプションを設定するにはどうすればよいですか? (たとえば、Kendo Grid のクリックされたページ番号に基づいてビューモデルでフィルター オブジェクトを設定し、POST 要求と共にサーバーに送信できるはずです。)
  • また、ページングのアイテムの総数を取得できるようにするには、サーバーから JSON データを次のような形式で受け取る必要{total: 675, data: {some JSON array containing items for the current page}}がありますか? または、これを達成するための代替手段はありますか?
4

2 に答える 2

2

Knockout-Kendo で必要な場合は、実際に dataSource を直接使用できます。dataオプションを false で指定するか、オプションも{}指定すると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/

于 2013-03-09T16:25:42.107 に答える