我一直在尝试使用datagrid-filter在表内的列中实现完全匹配搜索时遇到问题。
例如:
如果我搜索“名称1”,则在名称列下,搜索结果仅显示名称1。
谁能教我该怎么做?
非常感谢您的帮助。
$(function(){
var rows = [];
for(var i=1; i<=800; i++){
var amount = Math.floor(Math.random()*1000);
var price = Math.floor(Math.random()*1000);
rows.push({
inv: 'Inv No '+i,
date: $.fn.datebox.defaults.formatter(new Date()),
name: 'Name '+i,
amount: amount,
price: price,
cost: amount*price,
note: 'Note '+i
});
}
$('#tt').datagrid({
view : scrollview,
striped : true,
pagination : false,
pageSize : 50,
singleSelect : false,
autoRowHeight: false,
remoteFilter : false,
remoteSort : true,
multiSort : true,
});
$('#tt').datagrid('enableFilter', [{
field:'amount',
type:'numberbox',
options:{
precision:0
},
op:['equal','notequal','less','greater']
}])
$('#tt').datagrid('loadData', rows);
});
请参考这个jsfiddle:
http://jsfiddle.net/6u2b8pyp/
最佳答案
准备在文档开头添加以下内容,以避免区分大小写的行为
$.fn.datagrid.defaults.operators =
{
equal: {
text: 'Equal',
isMatch: function(source, value){
return source.toLowerCase() == value.toLowerCase();
}
}
};
更换
$('#tt').datagrid('enableFilter', [{
field:'amount',
type:'numberbox',
options:{
precision:0
},
op:['equal','notequal','less','greater']
}])
至
$('#tt').datagrid('enableFilter', [{
field:'amount',
type:'numberbox',
options:{
precision:0
},
op:['equal','notequal','less','greater']
},{
field:'name',
type:'textbox',
options:{
precision:0
},
defaultFilterOperator: 'equal'
}])
将做Your fiddle mod