SlickGrid-使关键字搜索过滤器工作



我正在尝试为我正在开发的项目选择SlickGrid,而我首先尝试重新创建开箱即用的示例,而没有其他定制除了随机生成的数据和CSS。目前唯一不起作用的是搜索功能。如果你们中有些人可以看一下我的代码,并告诉我我是否做错了,我将非常感谢。这是链接:http://www.tomryandesign.com/dev/datagrid/custom2/

尝试此说明性示例。

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

这应该适合您的要求。

祝你好运。

在您的触发部件中,添加此:

$('#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;        
}

最新更新