slickgrid过滤显示错误的行

slickgrid filtering show wrong rows

本文关键字:错误 显示 过滤 slickgrid      更新时间:2023-10-19

基本上,它与给定的示例几乎相同http://mleibman.github.io/SlickGrid/examples/example-header-row.html我只做了更改:

第一个是只在几列中应用过滤器

    if(args.column.id == 'name' || args.column.id == 'contract'){
        var s = $("<input type='text'>");
        s.data('columndata', args.column.id)
        .val(columnFilters[args.column.id])
        .appendTo(args.node);
    };

第二个区别是数据在构造中没有插入到DataView中。我有一个ajax调用,它以json格式加载数据,然后使用dataView.setItems将数据数组注入dataView。

我所做的第三个更改是,我的过滤器检查行、列中的值是否完全匹配。

function filter(item){
for(var columnId in columnFilters){
    if(columnId != undefined && columnFilters[columnId] != ''){
    var c = obj.grid.getColumns()[obj.grid.getColumnIndex(columnId)];
    var value1 = item[c.field].toUpperCase();
    var value2 = columnFilters[columnId].toUpperCase();
    if(value1.indexOf(value2)==-1){
        return false;
    };
    };
};
return true;
};

一般来说,过滤器是工作的。它甚至过滤正确。如果有2个项目(行)包含例如"草药",则过滤器将找到2行。

但是,由于它找到了2行,它将显示2个第一行。

它是这样工作的。如果过滤器找到N个正确的值,它将显示前N行。

我确实尝试过调试dataview,但它只对行数进行操作,而不是对与参数匹配的行数进行调试

找到了问题的位置。我确实错误地重写了方法getItem(),该方法返回了错误的项目,因为我将行号传递给了它