SlickGrid自定义过滤器

时间:2013-04-18 15:17:42

标签: jquery search filter slickgrid

在这里搜索并没有找到答案。

我使用SlickGrid设置了一个非常复杂的网格。

搜索功能位于自定义工具栏中。我把它连接到网格函数的调用。

例如:

[HTML]

 <input name='name' id='id' class='searchable'>

[JS]

$('.searchable').on('change' , function() {
     var searchTerm = {};     
         searchTerm[$(this).attr('name')] = $(this).val();

     dataview.setFilterArgs(searchTerm);
     dataview.refresh();
});

我可以看到参数传递给自定义过滤器

var customFilter = function(item, args) {
    ***$.each(args , function(key , val) {
        if (val!=='' && val!==null) {
           return (item[key] == val);
        }
    });***
return true;
}

[!]问题是当你在$ .each中时,如果你“返回”它只跳过循环。但是没有任何东西回到功能之外。

但在网格上没有发生。什么都没有过滤

这是我的设置

dataview = new Slick.Data.DataView();
grid = new Slick.Grid(grid_id , dataview , columns , options);
grid.selectionModel(new Slick.RowSelectionModel());

grid.init();

dataview.beginUpdate();
dataview.setItems(gridData);
dataview.setFilter(customFilter);
dataview.endUpdate();

我一直在关注github上的两个过滤器示例。但除了这个之外我看不出任何不同

如果我使用

初始化数据视图
dataview = new Slick.Data.DataView({inlineFilters: true});

我收到错误:

未捕获的SyntaxError:未定义的标签'_coreloop'(slick.dataview.js行:639)

尝试阅读代码但缺少评论......所以我真的不知道是什么问题。

有人遇到过类似的问题吗?

1 个答案:

答案 0 :(得分:1)

如果将dataView和columnFilters声明为全局变量,则可以调用此函数:

function SetfilterOnGrid(SearchPhrase) {
    columnFilters = {"1": SearchPhrase};
    dataView.refresh();
}

数字“1”是列ID,SearchPhrase是您在网格中搜索的短语

关于清除过滤器,您可以使用此功能:

function ClearFilterOnGrid()
{
    columnFilters = {};
    dataView.refresh();
}