私は一緒に仕事をしようとしKendoGrid
てKnockout JS
います。これまでのところ、とても良い..リモートデータソースでフィルタリングと並べ替えを行う方法がわからないことを除いて(並べ替えとフィルタリングができるようになる前に、クライアント側にすべてのデータをロードしたくありません.)。これが私がこれまでに持っているものです:
マークアップ
<div class="row">
<div id="Grid" data-bind="kendoGrid: Records"></div>
</div>
JS
var PageVM = function (model) {
model = model || {};
var self = this;
self.Id = ko.observable(model.Id || 0);
self.Title = ko.observable(model.Title || '');
self.Slug = ko.observable(model.Slug || '');
self.MetaKeywords = ko.observable(model.MetaKeywords || '');
self.MetaDescription = ko.observable(model.MetaDescription || '');
self.IsEnabled = ko.observable(model.IsEnabled || false);
self.BodyContent = ko.observable(model.BodyContent || '');
self.CssClass = ko.observable(model.CssClass || '');
self.CultureCode = ko.observable(model.CultureCode || '');
}
var ViewModel = function () {
var self = this;
self.Records = ko.observableArray([]);
self.Refresh = function () {
OData.read({
requestUri: "/odata/cms/Pages"
},
function (data, response) {
viewModel.Records([]);
$.each(data.results, function () {
var pageVM = new PageVM(this);
viewModel.Records.push(pageVM);
});
},
function (e) {
alert(e.message);
});
};
self.Edit = function () {
alert("test");
};
ko.bindingHandlers.kendoGrid.options = {
pageable: {
refresh: true
},
scrollable: false,
columns: [{
field: "Title",
title: "Title"
}, {
field: "Slug",
title: "Slug"
},{
field: "IsEnabled",
title: "IsEnabled"
},{
field: "Id",
title: " ",
template: '<a onclick="edit()" class="btn btn-default btn-sm">Edit</a> <a href="Delete/#=Id#" class="btn btn-danger btn-sm">Delete</a>'
}]
};
};
var viewModel;
$(document).ready(function () {
viewModel = new ViewModel();
viewModel.Refresh();
ko.applyBindings(viewModel);
});
function edit() {
alert("test");
}
ご覧のとおり、OData を使用しています。ノックアウトバインディングに関してはkendoGrid
、ここから来ています:
http://rniemeyer.github.io/knockout-kendo/web/Grid.html
おそらく、最初に KendoGrid 自体からフィルターと並べ替えを取得し、それを手動で odata クエリ文字列に追加する必要があると思います。また、Kendo に総ページ数を手動で伝えて、グリッドに表示するページ数を認識させる必要があります。
ですから、何をする必要があるかはわかっていると思いますが、どこから始めればよいかわかりません (たとえば、KendoGrid でそのようなデータを取得/設定するにはどうすればよいですか?)。