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

  • 相关阅读:
    Redis hyperloglog去重复统计
    linux下对qt编写的程序进行部署
    安装GDBImageWatch ,在QT中查看图像
    整编《计算机视觉中的多视图几何》序言
    快速阅读《QT5.9 c++开发指南》1
    快速阅读《QT5.9 c++开发指南》2
    在Linux下OpenCV的下载和编译
    GOQTTemplate简单介绍
    基础的基于QT的图像查看程序
    基于opencv和QT的摄像头采集代码( GoQTtemplate3持续更新)
  • 原文地址:https://www.cnblogs.com/shen119/p/3300754.html
Copyright © 2020-2023  润新知