我想强调那些在Kendo UI Grid中重复的记录
var onDataBound = function(e) {
var nodelist = e.sender.dataSource._data;
for (var i = 0; i < nodelist.length; i++) {
var tr = nodelist[i];
// var tds = tr.getElementsByTagName('td');
// if (tr == e.sender.dataSource._data) return tr;
// var ff = []; ff = tr;
};
}
var onDataBound = function (e) {
var nodelist = e.sender.dataSource._data;
for (var i = 0; i < nodelist.length; i++) {
var tr = nodelist[i];
// var tds = tr.getElementsByTagName('td');
if (tr == e.sender.dataSource._data)
return tr;
var ff = [];
ff = tr;
}
答案 0 :(得分:2)
你没有指定你想要检查重复的方式,所以我做了一个小功能来检查所有行和所有列的双重性。它似乎比实际情况更复杂:
yourTableView.cellLayoutMarginsFollowReadableWidth = NO;
它收集所有数据 - 关注这一点 - 可见行,并将其添加到基本为var checkGridDuplictyValue = function() {
var grid = $("#grid").data("kendoGrid"),
data = grid.dataItems(),
fields = grid.options.columns.map(x => x.field),
checkData = {};
// Gathering data
data.forEach(d => {
fields.forEach(f => {
if (!checkData.hasOwnProperty(f)) checkData[f] = {};
if (!checkData[f].hasOwnProperty(d[f])) checkData[f][d[f]] = [];
checkData[f][d[f]].push(d.uid);
});
});
// Checking for duplicity and styling duplicated rows
Object.keys(checkData).forEach(k => {
Object.keys(checkData[k]).forEach(c => {
if (checkData[k][c].length > 1) {
checkData[k][c].forEach(x => $(grid.tbody).find('tr[data-uid="' + x + '"]').addClass("duply-row"));
}
});
});
};
和property=column's value
的对象中。因此它知道有多少(以及哪些)行对于相同的列具有相同的值。然后它只是循环通过它为每个重复的行添加一个类。