接着上《一篇自己封装的Extjs组件GroupGrid的代码(2) GroupGrid.js》
this.hightQueryFormPanelItem=hightQueryFormPanelItem; //高级查询控件
this.store.baseParams["search"]=items[0]["name"]; //默认按第一个查询字段查询
this.searchTextBox= new Ext.ux.form.SearchField({
store: this.store,
width:140,
height:18,
emptyText:"",
selectOnFocus:true
});
this.searchTextBut=new Ext.CycleButton({
showText: true,
minWidth:60,
items:items
});
this.searchTextBut.on("change",function(btn, item){
this.store.baseParams["search"]=item.name;
},this);
var QueryFromPanelButtons=[new Ext.Button({text:"确 定",ref:"../../okBut"}),
new Ext.Button({text:"重 置",ref:"../../reBut"}),
new Ext.Button({text:"取 消",ref:"../../noBut"})];
this.higthQueryFromPanel=new Ext.form.FormPanel({
frame:true,
labelWidth:60,
buttonAlign:"center",
items:this.hightQueryFormPanelItem,
buttons:QueryFromPanelButtons
});
QueryFromPanelButtons[0].on("click",function(but){
if(this.higthQueryFromPanel.getForm().isValid()){
Ext.MessageBox.show({
msg: '正在查询,请稍等...',
progressText: 'load...',
width:300,
wait:true,
waitConfig: {interval:200},
icon:'download',
animEl: 'loading'
});
var where=[];
Ext.each(this.hightQueryFormPanelItem,function(){
if(this.type=="string")
where[where.length]=new whereRelation(this.name,this.getValue(),"string",null,null,true)
else if(this.type=="date")
where[where.length]=new whereRelation(this.name,this.getBeginDateValue(),"string",this.getEndDateValue(),null,null);
else if(this.type=="int"||this.type=="float")
where[where.length]=new whereRelation(this.name,this.getBeginNumberValue(),"float",this.getEndNumberValue(),null,null);
});
var grid=this;
this.store.baseParams["query"]=null;
this.store.baseParams["where"]=new FormatWhere(where).getWhereSql();
this.store.reload({ params:{start:0},
callback: function(r, options, success){
Ext.MessageBox.hide();
if(success){
grid.hightQueryWindow.hide();
grid.focus();
}else{
Ext.Msg.alert('操作','失败!');
}
}
});
}
},this);
QueryFromPanelButtons[1].on("click",function(but){
this.higthQueryFromPanel.getForm().reset();
},this);
QueryFromPanelButtons[2].on("click",function(but){
this.hightQueryWindow.hide();
this.focus();
},this);
this.hightQueryWindow = new Ext.Window({
title:"高级查询",
width:420,
resizable:false,
closeAction : 'hide',
closable:true,
plain : true,
modal: 'true',
border:false,
items: [this.higthQueryFromPanel]
});
this.hightQueryBut=new Ext.Button({text:"高级查询",ref:"../findBut",pressed:true });
this.hightQueryBut.on("click",function(but){
this.hightQueryWindow.show();
},this);
this.tbar.unshift([this.searchTextBut,this.searchTextBox,"","-","",this.hightQueryBut,new Ext.Toolbar.Fill()]);
},
createDataSource:function(){
this.DataSourceParams=Ext.apply({tableName:null,key:null,query:null,search:null,where:null,groupBy:null,orderBy:null,direction:"Desc"},this.DataSourceParams);
},
createListeners:function(){
this.listeners=Ext.apply({
'contextmenu':function(e){
//e.stopEvent();
},
'rowcontextmenu':function(grid,rowIndex,e){
e.preventDefault();
if(!grid.getTopToolbar()) return ;
grid.getSelectionModel().selectRow(rowIndex);
if(!grid.rowContextMenu){
var menus=[],but;
var buttons=grid.getTopToolbar().findByType("button");
for(var i=0;i<buttons.length;i++){
but=buttons[i];
if(but!=grid.searchTextBut&&but!=grid.hightQueryBut){
menus.push({
text:but.text,
iconCls:but.iconCls,
listeners:{
scope:but,
'click':function(item){
if(this.handler) this.handler();
else alert("事件未定义");
}
}
});
}
but=null;
}
grid.rowContextMenu=new Ext.menu.Menu(menus);
}
grid.rowContextMenu.showAt(e.getPoint());
},
'rowclick':function(grid,rowIndex,e){
var rows=this.getSelectionModel().getSelections();
if(this.selectRowIndex&&this.selectRowIndex==rowIndex) return ;
this.selectRowIndex=rowIndex;
this.selectRow=rows[0];
this.fireEvent("afterrowclick",this,rowIndex,e,rows);
},
'afterrowclick':function(grid,rowIndex,e,selectRows){ //自定义事件,行点击后触发
return true;
}
},this.listeners)
},
initComponent: function(){
Ext.tet.GroupGrid.superclass.initComponent.call(this);
},
render:function(gp){
if(this.chartButton) this.createChartWindow();
Ext.tet.GroupGrid.superclass.render.apply(this, arguments);
},
constructor:function(options){
Ext.apply(this,options);
this.createDataSource();
this.createListeners();
this.setHeight();
this.createRowSelectionModel();
this.createStore();
this.createBbar();
if(this.queryButton) this.createQueryMenu();
Ext.tet.GroupGrid.superclass.constructor.call(this);
}
});
本文详细介绍了Extjs中自定义的GroupGrid组件的实现方法,包括如何创建查询菜单、配置高级查询窗口及按钮事件处理等内容。通过具体实例展示了如何进行数据查询和筛选。
 GroupGrid.js&spm=1001.2101.3001.5002&articleId=80080352&d=1&t=3&u=c3afaa94d3dc44008122d2e2cc258e38)

被折叠的 条评论
为什么被折叠?



