Search code examples
extjscomboboxextjs3

How collapse/close Combox without selected on dropdown menu?


code:

      window.combox_search_where = new Ext.form.ComboBox({
            typeAhead: true,
            lazyRender:true,
            fieldLabel: 'Где',
            forceSelection: true,
            triggerClass: 'arrow_start',
            style: 'margin-left:-70px;margin-top:20px;',
            width: 270,
            labelStyle: 'font-weight:bold;text-align:left;padding-top:20px;padding-left:0px;width:55px;',
            store:new Ext.data.SimpleStore({fields:[],data:[[]]}),
            editable:false,
            mode: 'local',
            resizable: true,
            triggerAction:'all',
            tpl: '<tpl for="."><div style="height:200px"><div id="search_tree1"></div></div></tpl>',
    });
    window.search_tree1 = new Ext.tree.TreePanel({
            loader: new Ext.tree.TreeLoader({dataUrl:'layers.php?param=2'}),
            rootVisible: false,
            border:false,
            root:new Ext.tree.AsyncTreeNode({text: 'treeRoot',id:'0'})
    });

    search_tree1.on({
            'expandnode': function(node){
                     combox_search_where.expand();
            },
            'collapsenode': function(node){
                     combox_search_where.expand();
            },
            'load': function(node){
                     search_tree1_filter.filterBy(function(n){
                               return n.text!='Дополнительные' && n.id!='3dbuild2';
                     });
                     search_tree1.expandAll();
                     search_tree1.collapseAll();
            }
    });

    var search_tree1_filter=new Ext.tree.TreeFilter(search_tree1, {
                 clearBlank : true,
                 autoClear : true
    });

    combox_search_where.on({
              'expand':function(combo){
                    search_tree1.render('search_tree1');
              }
    });

Combox collapse/close after checked node in treePanel and other. I need collapse/close combox without events on treePanel(click on trigger combox or blur or other).


Solution

  • My answer(i dunno this before question):

        var search_flag_combox1=0;
    
        search_tree1.on({
                'click':function(node){
                         search_flag_combox1=1;
                },
                'checkchange': function(node,checked){
                         search_flag_combox1=1;
                },
                'beforeexpandnode': function(node){
                         search_flag_combox1=1;
                },
                'beforecollapsenode': function(node){
                         search_flag_combox1=1;
                },
                'load': function(node){
                         search_tree1_filter.filterBy(function(n){
                                   return n.text!='Дополнительные' && n.id!='3dbuild2';
                         });
                         search_tree1.expandAll();
                         search_tree1.collapseAll();
                }
        });
    
        var search_tree1_filter=new Ext.tree.TreeFilter(search_tree1, {
                     clearBlank : true,
                     autoClear : true
        });
    
    
        combox_search_where.on({
                  'expand':function(combo){
                        search_tree1.render('search_tree1');
                  },
                  'collapse': function(combo){
                     if (search_flag_combox1==1) {
                             combox_search_where.expand();
                             search_flag_combox1=0;
                     }
                  }
        });
    

    My be anybody know better?