如何从 Kendo UI 网格中查找重复记录
How To Find Duplicate Records from Kendo UI Grid
我想突出显示 Kendo UI 网格中重复的那些记录
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;
}
您没有指定要如何检查是否重复,所以我做了一个小功能来检查所有行和所有列是否重复。它看起来比实际更复杂:
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"));
}
});
});
};
Demo.
它收集所有数据 - 注意这一点 - 可见行 并将其添加到基本上是 property=column's value
和 value=array of row's uid
的对象中。所以它知道有多少(以及哪些)行对相同的列具有相同的值。然后它只是循环通过它添加一个 class 到每个重复的行。
我想突出显示 Kendo UI 网格中重复的那些记录
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;
}
您没有指定要如何检查是否重复,所以我做了一个小功能来检查所有行和所有列是否重复。它看起来比实际更复杂:
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"));
}
});
});
};
Demo.
它收集所有数据 - 注意这一点 - 可见行 并将其添加到基本上是 property=column's value
和 value=array of row's uid
的对象中。所以它知道有多少(以及哪些)行对相同的列具有相同的值。然后它只是循环通过它添加一个 class 到每个重复的行。