Extjs5实现带复选框的多选下拉选,复选框用html本身的checkbox控件

上一篇文章用的是Extjs提供的样式效果,可能会因为extjs的版本不同而导致css样式代码的不同,这篇文章用html本身的checkbox控件实现,通用性更好一些,效果图
这里写图片描述
这种方式实现的复选框看着比extjs的小一些,首先新创建个MultiSelect.js文件,代码如下

Ext.define('Ext.form.MultiSelect', {  
    extend: 'Ext.form.ComboBox',  
    alias: 'widget.multicombobox',  
    xtype: 'multicombobox',  
    initComponent: function(){  
        this.multiSelect = true;  
        this.listConfig = {  
              itemTpl : Ext.create('Ext.XTemplate',  
                    '<input type=checkbox>{[values.' + this.displayField + ']}'),  
              onItemSelect: function(record) {      
                  var node = this.getNode(record);  
                  if (node) {  
                     Ext.fly(node).addCls(this.selectedItemCls);  

                     var checkboxs = node.getElementsByTagName("input");  
                     if(checkboxs!=null)  
                     {  
                         var checkbox = checkboxs[0];  
                         checkbox.checked = true;  
                     }  
                  }  
              },  
              onItemDeselect: function(record) {
                var node = this.getNode(record);
                if (node) {
                    Ext.fly(node).removeCls(this.selectedItemCls);

                    var checkboxs = node.getElementsByTagName("input");
                    if (checkboxs != null)
                    {
                        var checkbox = checkboxs[0];
                        checkbox.checked = false ;
                    }
                }
            },
              listeners:{  
                  itemclick:function(view, record, item, index, e, eOpts ){  
                      var isSelected = view.isSelected(item);  
                      var checkboxs = item.getElementsByTagName("input");  
                      if(checkboxs!=null)  
                      {  
                          var checkbox = checkboxs[0];  
                          if(!isSelected)  
                          {  
                              checkbox.checked = true;  
                          }else{  
                              checkbox.checked = false;  
                          }  
                      }  
                  }  
              }         
        }         
        this.callParent();  
    }  
}); 

然后在正式使用的jsp引入这个js,因为我是放到common下面了,所以路径是这样的

 <script src="../js/common/MultiSelect.js"></script>

jsp使用代码,只需要把用Ext.form.MultiSelect替换Ext.form.MultiSelect即可,代码如下

var roleComboBox = Ext.create('Ext.form.MultiSelect', {
                    fieldLabel: '选择角色',
                    store: roleComboStore,
                    queryMode: 'local',
                    multiSelect: true,
                    valueField: 'roleId',
                    displayField: 'roleName',
                    id: 'roleList',
                    name: 'roleList',
                    // allowBlank: false,
                    editable: false,
                    emptyText: "请选择..."
                });

这样就完成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值