如何从Kendo UI Grid中查找重复记录

时间:2017-03-14 06:41:36

标签: javascript jquery kendo-ui kendo-asp.net-mvc

我想强调那些在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; 
  };
}

What I've tried so far

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; 
}

1 个答案:

答案 0 :(得分:2)

你没有指定你想要检查重复的方式,所以我做了一个小功能来检查所有行和所有列的双重性。它似乎比实际情况更复杂:

yourTableView.cellLayoutMarginsFollowReadableWidth = NO;

Demo

它收集所有数据 - 关注这一点 - 可见行,并将其添加到基本为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的对象中。因此它知道有多少(以及哪些)行对于相同的列具有相同的值。然后它只是循环通过它为每个重复的行添加一个类。