zoukankan      html  css  js  c++  java
  • Extjs 全选的问题

    extjs checkbox全选问题,有一个很让人头疼的地方:就是使用它的handler,只要给checkbox 调用setValue()的话,就会触发handler的句柄函数,这不是我们想要的。这会导致单独点击view中某一项,回全选按钮一样的操作 。所以只能注册 它的"click"事件

    此时,this的指代也不同。所以不得不花力气找它:var isAllchecked=toolbar.getComponent("allCheck").getValue();

    其次:extjs checkbox并不是我们想象的checkbox组合而成的,而是一个button ,只是button放了几张像checkbox背景图片而且

    这点确实不仔细查看,还真料不到!

    做全选(当所有子项全被选中时) 最主要是获取选中的record,不如我们在item点击的时候,动态对其Record赋予一个selected属性,然后遍历store获取哪些record selected为true ,它的长度是否等于store.getCount()的长度,做出全选的动作

    ,listeners:{
                        "click":{
                            element:"el"
                            ,fn:function(e,item,el){
                                var currentView=view.currentView.items.getAt(0);
                                var store=view.store;
                                function allChecked(view,record,deselect){
                                    var node=view.getNode(record);
                                    var checkbox=Ext.dom.Query.selectNode("input[type='checkbox']", node);
                                    var element=new Ext.dom.Element(node);
                                    if (deselect) {
                                        checkbox.checked = false;
                                        record.selected = false;
                                        element.removeCls("selectModelDispaly");
                                        return;
                                    }
                                    checkbox.checked = true;
                                    record.selected = true;
                                    element.addCls("selectModelDispaly");
                                }
                                var isAllchecked=toolbar.getComponent("allCheck").getValue();
                                store.each(function(item){
                                    allChecked(currentView,item,!isAllchecked);
                                });
                            }
                        }
                    }

     ,itemclick:function(cmp,view,store,record,ischecked,item){
                            var element=new Ext.dom.Element(item);
                            if(ischecked){
                                var count=0;
                                element.addCls("selectModelDispaly");
                                store.each(function(item){
                                    if(item.selected)count++;  //此处对sellected为true进行记录
                                });
                                if(count==store.getCount())cmp.toolbar.getComponent("allCheck").setValue(true); //相等时设置全选按钮为true,注意!!!不能使用checkbox的handler,它会执行handler的句柄函数,所以只能注册checkbox的el 的click事件!


                            }else{
                                cmp.toolbar.getComponent("allCheck").setValue(false);
                                element.removeCls("selectModelDispaly");
                            }
                        }

  • 相关阅读:
    springboot2的redis缓存管理器cacheManager配置,使存入json格式数据
    td内有图片和文字,如何都垂直居中?
    java使用itext导出PDF文本绝对定位
    plsqlDeveloper快速输入(自动替换)配置
    ExtJs4grid合并行
    MySQL存储引擎与体系结构
    Spring AOP
    在IoC容器中装配Bean
    java内存区域与内存溢出异常
    spring IoC(一)
  • 原文地址:https://www.cnblogs.com/shen119/p/3300754.html
Copyright © 2011-2022 走看看