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");
                            }
                        }

  • 相关阅读:
    golang 创建一个简单的连接池,减少频繁的创建与关闭
    go语言string、int、int64互相转换
    JVM中的STW和CMS
    如何避免后台IO高负载造成的长时间JVM GC停顿(转)
    NetScaler VLAN’s Demystified
    NetScaler SNIPs Bound To An Interface Without A VLAN
    NetScaler Best Practice With VMAC In A High Availability Configuration
    dashboard and reporting Interface analysis
    Windows远程桌面连接 出现身份错误 要求的函数不受支持
    ns统计使用资源的SNMP OID
  • 原文地址:https://www.cnblogs.com/shen119/p/3300754.html
Copyright © 2011-2022 走看看