我正在尝试为我正在开发的项目选择 SlickGrid,我首先尝试重新创建开箱即用的示例,除了随机生成的数据和 CSS 之外,没有任何其他自定义。现在唯一不起作用的是搜索功能。如果你们中的一些人可以查看我的代码并让我知道我做错了什么,我将不胜感激。这是链接:http ://www.tomryandesign.com/dev/datagrid/custom2/
问问题
2738 次
2 回答
0
试试这个说明性的例子。
var dataView = new Slick.Data.DataView();
var slickGrid = new Slick.Grid($('#grid_div'), dataView, gridColumns, gridOptions);
//Keyup event on search selector..
$('#search').keyup(function(e) {
// clear on Esc
if (e.which == 27) {
this.value = "";
}
var searchList = $.trim(this.value.toLowerCase()).split(' ');
dataView.setFilter(gridFilter);
slickGrid.invalidate();
this.focus();
});
//This is custom logic for grid Filtering..
function gridFilter (rec) {
var found;
for (i = 0; i < gridSearchList.length; i += 1) {
found = false;
$.each(rec, function(obj, objValue) {
if (typeof objValue !== 'undefined' && objValue != null
&& objValue.toString().toLowerCase().indexOf(gridSearchList[i]) != -1) {
found = true;
return false; //this breaks the $.each loop
}
});
if (!found) {
return false;
}
}
return true;
}
这应该适合您的要求。
祝你好运。尼克斯
于 2012-11-03T06:37:07.007 回答
0
在您的触发器部分,添加以下内容:
$('#search').keyup(function(e) {
if(e.which === 27) { // clear on esc
this.value = '';
}
dataView.setFilter(gridFilter);
slickGrid.invalidate();
});
**//create a function gridFilter**
function gridFilter (rec) {
var found,
searchData = $.trim($('#search').val()).toLowerCase().split(' ');
for (i = 0; i < searchData.length; i += 1) {
found = false;
$.each(rec, function(obj, objValue) {
if (typeof objValue !== 'undefined' && objValue != null && objValue.toString().toLowerCase().indexOf(searchData[i]) != -1) {
found = true;
return false; //this breaks the $.each loop
}
});
if (!found) {
return false;
}
}
return true;
}
于 2016-07-12T07:04:20.840 回答