easyUI datagrid 模糊查询关键字,不需要和服务器交互.

 
在搜索框中输入查询关键字,datagrid会将不匹配的行以藏掉,下面是主要实现代码.
 
主要是思路就是依次查询各个单元格是否匹配关键字,
然后将不匹配的行索引保存起来,然后对行进行刷新,应用新的css样式即可.
搜索框相关的代码


 //要隐藏的行的索引集合.
    var hideIndexs = new Array();
    $('#ss').searchbox({
        width: 200,
        searcher: function (value) {
            hideIndexs.length = 0;
            if (value == '请输入查询内容') {
                value = '';
            }
            //结束datagrid的编辑.
            endEdit();
            var rows = $('#dg').datagrid('getRows');

            var cols = $('#dg').datagrid('options').columns[0];

            for (var i = rows.length - 1; i >= 0; i--) {
                var row = rows[i];
                var isMatch = false;
                for (var j = 0; j < cols.length; j++) {

                    var pValue = row[cols[j].field];
                    if (pValue == undefined) {
                        continue;
                    }
                    if (pValue.toString().indexOf(value) >= 0) {
                        isMatch = true;
                        break;
                    }
                }
                if (!isMatch)
                    hideIndexs.push(i);
         //刷新行,否则不能看到效果. $(
'#dg').datagrid('refreshRow', i); } }, prompt: '请输入查询内容' }); function endEdit() { var rows = $('#dg').datagrid('getRows'); for (var i = 0; i < rows.length; i++) { $('#dg').datagrid('endEdit', i); } }

 然后datagrid中需要添加是rowStyler属性,将该行的css属性display设置为none 即可实现.

  rowStyler: function (index, row) {
                if (hideIndexs.indexOf(index)>=0) { return 'background:red; display:none'; }
            },

 

posted @ 2013-01-14 15:00  wccc  阅读(7739)  评论(2编辑  收藏  举报