0

我正在尝试为我正在开发的项目选择 SlickGrid,我首先尝试重新创建开箱即用的示例,除了随机生成的数据和 CSS 之外,没有任何其他自定义。现在唯一不起作用的是搜索功能。如果你们中的一些人可以查看我的代码并让我知道我做错了什么,我将不胜感激。这是链接:http ://www.tomryandesign.com/dev/datagrid/custom2/

4

2 回答 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 回答