私のシナリオに最適な方法がわからないので、最初に説明します。
2 つのデータソースがあります。個人とグループ。各個人項目には、それが属するグループのインジケータがあります。個人は剣道グリッドに、グループは <ul> にバインドされます。私の問題は、グループのほかに、そのグループに何人の人がいるかを示すカウント数を表示したいということです。この情報は、グループ自体の一部ではなく、人のデータソースから計算されます。
その一般的な質問で申し訳ありませんが、私はこれに本当に苦労しています...
更新:これが私が今持っているものです:
var contactGroupsDataSource = new kendo.data.DataSource({
transport: {
read: {
url: "api/contactgroups"
}
}
});
$('#contactGroupsList').kendoListView({
dataSource: contactGroupsDataSource,
template: "<li class='contactGroupListItem' data-number='${Number}'>${Number} ${Name} (<span data-bind="text: cgcount[1]"></span>) </li>"
});
viewModel = kendo.observable({
contactsDataSource: new kendo.data.DataSource({
transport: {
read: {
url: "api/contacts"
}
},
schema: {
model: {
id: "Id",
fields: {
id: { type: "string" },
FirstName: { type: "string" },
LastName: { type: "string" },
ContactGroupNumber: { type: "integer" }
}
}
},
change: function (e) {
var data = this.data();
for (var i = 0; i < data.length; i++) {
var cg = data[i]["ContactGroupNumber"];
viewModel.cgcount.splice([cg - 1], 1, viewModel.cgcount[cg - 1] + 1);
}
for (var i = 0; i < 7; i++) {
console.log(i + 1 + ': ' + viewModel.cgcount[i]);
}
}
}),
cgcount: new kendo.data.ObservableArray([0, 0, 0, 0, 0, 0, 0])
});
kendo.bind($("#contactsGroupContainer"), viewModel);
contactsListView = $('#contactsList').kendoGrid({
dataSource: viewModel.contactsDataSource,
sortable: true,
rowTemplate: kendo.template($("#rowTemplate").html())
});
ダニエル