获取Kendo Grid过滤的数据源计数

时间:2014-08-28 06:50:12

标签: jquery kendo-ui kendo-grid kendo-datasource

我在剑道网格中使用工具栏过滤器下拉列表。当用户选择下拉列表时,我需要获取已过滤记录的计数。下面的代码对我不起作用

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({});
        }


    }

2 个答案:

答案 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"
},
...