解决ext下拉列表全选和去全选功能

最近在做ext的项目,需求要求处理下拉列表要有全选和去全选的功能。在网上找了http://lovcombo.extjs.eu/ 这个是没有全选功能的,自己又补充了代码,希望对大家有用。

附件里lovcombo.css,和lovcombo.js都是在网上直接下载的,可以实现http://lovcombo.extjs.eu/的效果,lovcombo-new.js是重写了里面的onSelect:function(record, index)方法,拷出来给大家看下

这是旧文件里的

 ,onSelect:function(record, index) {   
        if(this.fireEvent('beforeselect', this, record, index) !== false){   
  
            // toggle checked field   
            record.set(this.checkField, !record.get(this.checkField));   
  
            // display full list   
            if(this.store.isFiltered()) {   
                this.doQuery(this.allQuery);   
            }   
  
            // set (update) value and fire event   
            this.setValue(this.getCheckedValue());   
            this.fireEvent('select', this, record, index);   
        }   
    } // eo function onSelect   

 修改过的给大家看下

,onSelect:function(record, index) {   
    	if(record.get(this.displayField) == '全部'){
    		if(!record.get(this.checkField)){
    			this.selectAll();
    		}else{
    			this.deselectAll();
    		}
    	}else{
	        if(this.fireEvent('beforeselect', this, record, index) !== false){   
	  
	            // toggle checked field   
	            record.set(this.checkField, !record.get(this.checkField));   
	            // display full list   
	            if(this.store.isFiltered()) {   
	                this.doQuery(this.allQuery);   
	            }   
	            // set (update) value and fire event  
	            var snapshot = this.store.snapshot || this.store.data;  
		        var isNotCheck = false;
		        snapshot.each(function(r) {   
		            if(!r.get(this.checkField) && r.get(this.displayField) != '全部') {   
		            	isNotCheck = true;  
		            	return;
		            }   
		        }, this); 
		       
	        	snapshot.each(function(r) {   
		            if(r.get(this.displayField) == '全部') { 
		            	 if(isNotCheck){
		            		 r.set(this.checkField, false);   
		            	 }else{
		            		 r.set(this.checkField, true); 
		     	        }	
		            }  
		        }, this); 
	            this.setValue(this.getCheckedValue());
	            this.fireEvent('select', this, record, index);   
	        }
    	}
    } 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值