在这里搜索并没有找到答案。
我使用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)
尝试阅读代码但缺少评论......所以我真的不知道是什么问题。
有人遇到过类似的问题吗?
答案 0 :(得分:1)
如果将dataView和columnFilters声明为全局变量,则可以调用此函数:
function SetfilterOnGrid(SearchPhrase) {
columnFilters = {"1": SearchPhrase};
dataView.refresh();
}
数字“1”是列ID,SearchPhrase是您在网格中搜索的短语
关于清除过滤器,您可以使用此功能:
function ClearFilterOnGrid()
{
columnFilters = {};
dataView.refresh();
}