我正在尝试将自定义过滤器应用于Kendo DataSource,以便使用几列的计算进行过滤。 例如。过滤所有field1值大于field2值的filterValue百分比的项目。
dataSource.filter({
field: 'field1',
operator: function(value) {
return value * 100 / valueFromField2 > filterValue;
},
value: filterValue
})
所以基本上我需要从操作符函数中访问其他行字段。
任何想法如何实现它?
答案 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
});
}
}