自己封装的Extjs组件GroupGrid的代码(3) GroupGrid.js

本文详细介绍了Extjs中自定义的GroupGrid组件的实现方法,包括如何创建查询菜单、配置高级查询窗口及按钮事件处理等内容。通过具体实例展示了如何进行数据查询和筛选。

接着上《一篇自己封装的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);
             }
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值