在Kendo DataSource自定义过滤期间访问整行

时间:2017-11-03 09:03:52

标签: javascript angular kendo-grid kendo-datasource

我正在尝试将自定义过滤器应用于Kendo DataSource,以便使用几列的计算进行过滤。 例如。过滤所有field1值大于field2值的filterValue百分比的项目。

dataSource.filter({
    field: 'field1',
    operator: function(value) {
        return value * 100 / valueFromField2 > filterValue;
    },
    value: filterValue
})

所以基本上我需要从操作符函数中访问其他行字段。

任何想法如何实现它?

2 个答案:

答案 0 :(得分:0)

我不确定如何将其应用于您的案例,但如果您想访问Kendo Grid中的其他行,您可以:

var grid = $("#grid").data("kendoGrid"); // The complete grid
var row = grid.tbody.find("tr:eq(0)"); // Row index. Starts from 0. Excludes header row
var data = grid.dataItem(row); // 'data' now has all fields for 'row'

考虑一个示例网格:

column1|column2
---------------
----1--|--One--
----2--|--Two--
---------------

因此,eq(0)

data.column1: 1
data.column2: One

更多信息:https://docs.telerik.com/kendo-ui/api/javascript/ui/grid#fields-tbody

希望这会有所帮助:)

答案 1 :(得分:0)

我相信你需要迭代每个字段值。

类似的东西:

function (value) {

        var rowData = this.dataSource.view();

        for (var i = 0; i < rowData.length; i++) { // Iterate each row
            $.each(rowData[i].items, function (index, object) { // Iterate each object
                var uid = object.uid;

                // DO YOUR LOGIC HERE

            });
        }
    }