众所周知,ext的store有个离线过滤功能,store的filter可支持模糊查询,大小写匹配等。
通过改装,可以把其运用到combox里,让combox支持真正的后台模糊查询,可按指定任意一个或多个字段和内容模糊查询。
如下和java的vo结合的代码:
略。。。待补
ext如此牛B,其实好戏还在后头。再看一段代码。
crTaskSearchGrid.initGrid_3 = function(){
var colMap ={
uuid:'technicianCd',
columns:[
{header: "disFlag",hidden:true,hideable:false,dataIndex: 'disFlag'},
{header: "filter",hidden:true,hideable:false,dataIndex: 'filter'},//用于模糊查询过滤
{header: "种植主体编号", width: 100, sortable: true, locked:false, dataIndex: 'collectObjectId',renderer:dis,summaryRenderer:function(){return '<b>合计</b>'}},
{header: "种植主体名称", width: 100, sortable: true, locked:false, dataIndex: 'collectObjectName',renderer:dis},
{header: "作业时间", width: 100, sortable: true, locked:false, dataIndex: 'wTime',renderer:Ext.util.Format.timeYmd}
//{header: "深耕面积(亩)", width: 100, sortable: true, locked:false, dataIndex: 'deepPloughArea'},
//{header: "机耕面积(亩)", width: 100, sortable: true, locked:false, dataIndex: 'machinePloughArea'}
]};
addColumn(colMap);
var cdTF = new Ext.form.TextField({anchor:'99%',emptyText:'输入编码,回车查询',width:110,listeners :{
specialKey :function(field,e){
if (e.getKey() == Ext.EventObject.ENTER) filter();
}
}});
var nameTF = new Ext.form.TextField({anchor:'99%',emptyText:'输入名称,回车查询',width:110
,listeners :{
specialKey :function(field,e){
if (e.getKey() == Ext.EventObject.ENTER) filter();
}
}});
var date = new Ext.form.DateField({id:'date',editable:false,fieldLabel:"时间",format:"Y-m-d"});
var grid = crTaskSearchGrid.listGrid_3 = new Ext.grid.HsGridPanel({
colMap: colMap,
loadMask: {msg:'<fmt:message key="loadData.waitmsg"/>'},
viewConfig: {
forceFit:true
},
showRowNumber:true,
border:false,
hidden:true,
autoScroll:true,
dwrFun:crTaskSearchManager.getCrTaskSearchZzzt,
showPagebar:false,
summary:true,
singleSelect :true,
tbar:[
{xtype:'button',id:'tbarStr',width:280,text:tbarStr},
'->',"种植主体:",cdTF,'-',nameTF,'-',"时间:",date,'-',
{xtype:'button',cls:'btn',id:'resetDate',width:40,text: '<font style="font-weight:bold">重置</font>',
listeners:{click:function(){clearFilter()}}},'-',
{xtype:'button',cls:'btn',width:40,text: '<font style="font-weight:bold">返回</font>',
listeners:{click:function(){loadGrid_2()}}}
]
});
grid.store.sort('collectObjectId','ASC');
Ext.getCmp('date').on('select',function(f,newv,oldv){
filter();
});
/**
* store离线模糊查询
* @author chenbf
*/
function filter(){
grid.getStore().filterBy(function(record) {
var dTime = date.value==''?'':date.getValue().format('Y-m-d')+" 00:00:00";
var dCd = cdTF.getValue();
var dName = nameTF.getValue();
var rTime = record.get('wTime').format('Y-m-d')+" 00:00:00";
var rCd = record.get('collectObjectId');
var rName = record.get('collectObjectName');
//任何一个输入框,都有可能为空
function A(){
if(dCd!='')
return rCd.indexOf(dCd)!=-1;
return true;
}
function B(){
if(dName!='')
return rName.indexOf(dName)!=-1;
return true;
}
function C(){
if(dTime!='')
return rTime.indexOf(dTime)!=-1;
return true;
}
return A()&&B()&&C();
});
}
function clearFilter(){
grid.getStore().reload();
}
}