繁体   English   中英

在Kendo网格的客户端中对网格进行过滤时,如何获取事件处理程序?

[英]How to get the event handler when grid is filtered in client side in Kendo grid?

我在这里创建了一个简单的网格,当本地过滤网格时,我想重新计算一列的总和。 我不想计算列或模板,因为我想更新标签,并且当在本地对网格进行过滤时,我还必须在页面中执行其他操作。

var data = [
    { item: "item1", weight: 15 },
    { item: "item2", weight: 22 },
    { item: "item3", weight: 43 },
    { item: "item4", weight: 37 },
    { item: "item5", weight: 33 }
];
$("#grid").kendoGrid({
    columns: [
        { field: "item" },
        { field: "weight" }
    ],
    filterable: true,                       
    sortable: true,
    pageable: true,
    resizable:true, 
    selectable: "row",
    columnMenu: true,
    dataSource:data ,
    change: function(e) {
        var grid = e.sender;
        var selected = grid.dataItem(this.select());
        alert(selected.item);
        getSum();
    }
});
getSum();
function getSum() {
    var grid = $("#grid").data("kendoGrid");
    var data = grid.dataSource.data();
    var sum = 0;
    for ( var i = 0; i<= (data.length-1);i++)
    {
        sum = sum + data[i].weight;    
    }
    $("#weight-label").text(sum);   
}

http://jsfiddle.net/KendoDev/gb3qzgm2/

在客户端对网格进行过滤时,如何获取事件处理程序?

在计算和的函数中,应使用grid.dataSource.view()而不是grid.dataSource.data()

您的JSFiddle在此处修改: http : //jsfiddle.net/OnaBai/gb3qzgm2/1/

根据Kendo UI文档: data()

返回值获取数据源的数据项。

view()

返回与当前页面,过滤器,排序和组配置相对应的数据项

然后,如果你想自动更新的标签,你可以调用getSum从电网dataBound事件处理程序,您的jsfiddle这个其他版本的: http://jsfiddle.net/OnaBai/gb3qzgm2/2/

我只对您的代码做了几处小改动,当我们可以在生成“ Kendo修订/生成”的javascript字符串之前注入自己的自定义javascript时,这些更改可以满足Kendo的要求:

http://jsfiddle.net/gb3qzgm2/4/

var data = [{
    item: "item1",
    weight: 15
}, {
    item: "item2",
    weight: 22
}, {
    item: "item3",
    weight: 43
}, {
    item: "item4",
    weight: 37
}, {
    item: "item5",
    weight: 33
}];
$("#grid").kendoGrid({
    columns: [{
        field: "item"
    }, {
        field: "weight"
    }],
    filterable: true,
    sortable: true,
    pageable: true,
    resizable: true,
    selectable: "row",
    columnMenu: true,
    dataSource: data,
    change: function (e) {
        var grid = e.sender;
        var selected = grid.dataItem(this.select());
        alert(selected.item);
        var s = getSum();

        $("#weight-label, .k-pager-info").text('The Sum is: ' + s);
    }
});
//getSum();

function getSum() {
    var grid = $("#grid").data("kendoGrid");
    var data = grid.dataSource.data();
    var sum = 0;
    for (var i = 0; i <= (data.length - 1); i++) {
        sum = sum + data[i].weight
    }
    return sum
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM