1

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

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


    }
4

2 回答 2

2

好的,我们开始吧,
我也尝试了下拉菜单中的 chage 事件,但它不像你说的那样工作。在设置 Grid 的 dataSource 之前调用该事件。

所以我认为我们需要在绑定网格数据源时进行回调,因此来自网格的 dataBound 事件。

...
dataBound: function(){
    console.log("Grid data bound");   
    // this should do the trick    
    alert(grid.data("kendoGrid").dataSource.data().length);
},
...

这是一个基本的小提琴
我希望这是你需要的。

更新:
如果您使用服务器分页,您可以使用数据源中的 requestEnd 事件。
您必须查找服务器响应。在小提琴中,您有一个“__count”属性。
更新的小提琴

...
requestEnd: function (e) {
    var response = e.response;
    var type = e.type;
    alert(response.d.__count); // displays "77"
},
...
于 2014-08-28T07:30:03.097 回答
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/键入两个日期并单击“过滤器”按钮,它将在出生日期应用过滤器并显示总数。

于 2014-08-28T10:47:42.750 回答