我在剑道网格中使用工具栏过滤器下拉列表。当用户选择下拉列表时,我需要获取已过滤记录的计数。下面的代码对我不起作用
function ExamDateChange() { // function on dropdown change
var value = this.value(),
grid = $("#grid").data("kendoGrid");
if (value) {
grid.dataSource.filter({ field: "ExamID", operator: "eq", value: value });
grid.dataSource.fetch(function () {
var view = dataSource.view();
alert(view.length);
});
} else {
grid.dataSource.filter({});
}
}
答案 0 :(得分:2)
您可以使用fetch,但不应使用dataSource.view().length
,而应使用dataSource.total()
方法。
类似的东西:
function ExamDateChange() { // function on dropdown change
var value = this.value(),
grid = $("#grid").data("kendoGrid");
if (value) {
grid.dataSource.filter({ field: "ExamID", operator: "eq", value: value });
grid.dataSource.fetch(function () {
alert(view.dataSource.total());
});
} else {
grid.dataSource.filter({});
}
}
在此处查看此操作:http://jsfiddle.net/OnaBai/f19k0vrt/5/输入两个日期,然后点击"过滤"按钮,它将在出生日期应用过滤器并显示总数。
答案 1 :(得分:1)
好的,我们走了,
我也尝试了下拉列表中的chage事件,但它并没有像你说的那样工作。
在设置Grid的dataSource之前调用该事件。
所以我认为当绑定Grids dataSource时我们需要回调,因此来自Grid的dataBound事件。
...
dataBound: function(){
console.log("Grid data bound");
// this should do the trick
alert(grid.data("kendoGrid").dataSource.data().length);
},
...
这是一个基本的fiddle 我希望这就是你所需要的。
<强>更新强>
在使用serverpaging的情况下,您可以使用数据源中的requestEnd事件。
您必须查找服务器响应。在小提琴中你有一个“__count”属性。
更新了fiddle
...
requestEnd: function (e) {
var response = e.response;
var type = e.type;
alert(response.d.__count); // displays "77"
},
...