最初のページの読み込み時にグリッドをプリロードされたデータにバインドして、ページが読み込まれたときにグリッドがサーバーを再度呼び出さないようにしたいのですが、ページが読み込まれたときにグリッドがサーバーをajax呼び出しするようにしたい変更またはフィルタリングが適用されます。
「autoBind:false」を入れて、グリッドがプリロードされたデータにバインドされた直後に「トランスポート」オブジェクトを動的に作成しようとしましたが、剣道のコア内で何も機能せず、エラーをスローしません。
これが私の現在のコードです:
$(document).ready(function () {
var gridData = @Html.Raw(ViewBag.GridData);
var grid = $("#grid").kendoGrid({
dataSource: {
data: gridData,
transport: {
read: {
url: '@Url.Action("GetUsers")',
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8"
},
parameterMap: function (options) {
return JSON.stringify({ pageSize: options.pageSize, page: options.page });
}
},
...
pageSize: gridData.PageSize,
serverFiltering: true,
serverPaging: true
},
...
filterable: true,
pageable: {
refresh: true,
pageSizes: [10, 25, 50, 100]
}
}).data("kendoGrid");
});
グリッドの「datasource」に「data」プロパティと「transport」プロパティを同時に設定すると、「transport」は、プリロードされたデータがすでに含まれている「data」プロパティを無視して、最初のページのロードでデータを取得するようサーバーに要求します。 。
read
最初にプリロードされた配列を返す関数として定義します。次の呼び出しはajax
、データをロードするために呼び出す必要があります。
// Control if this is the first time it is loaded
var first = true;
// Initial content
var initial = [
{
ProductID: 1000, ProductName: "OnaBai", UnitPrice: 10, Discontinued: false
}
];
// DataSource definition
var dataSource = new kendo.data.DataSource({
serverFiltering: true,
serverSorting: true,
transport: {
read: function (op) {
if (first) {
// If it is first return initial content and toggle first
op.success(initial);
first = false;
} else {
// Subsequent runs use jquery.ajax for loading the data
$.ajax({
url: "http://demos.telerik.com/kendo-ui/service/Products",
dataType: "jsonp",
success: function(result) {
// Return loaded data
op.success(result);
},
error : function(result) {
op.error(result);
}
});
}
}
}
});
$("#grid").kendoGrid({
filterable: true,
dataSource : dataSource
});
ここで実行されていることを確認してください:http://dojo.telerik.com/@OnaBai/akoJ
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加