2011-05-11 1 views
0

상단 툴바 내에 텍스트 필드가있는 트리 패널이 있습니다.트리가로드되면 포커스를 훔칩니다.

Ext.define('search_tree', { 
    extend:'Ext.tree.Panel', 
    rootVisible:false, 
    autoScroll:true, 
    store:Ext.create('Ext.data.TreeStore', {   
     root:{ 
      id:'node', 
      nodeType:'async'   
     }, 
     proxy:{ 
      actionMethods:{ 
       'read':'POST' 
      }, 
      type:'ajax',    
      url:'myurl' 
     } 
    }), 

    tbar:['Search:', {  

     xtype:'textfield', 
     id:'search_combo',   
     listeners:{ 
      keyup:{buffer:150,fn:function(field, e) { 
        var val = this.getRawValue(); 

        if(val.length != this.valueLength){ 
         var thisTree = this.up('treepanel'); 
         thisTree.store.getRootNode().removeAll(); 

         //*************** 
         //When this load finishes the focus is taken away 
         //From the text field :(
         //*************** 

         thisTree.store.load({params:{search_string:val}});              
        }          
     }} 
      }  

    }] 
}); 

답변

0

하나의 솔루션이 store.load에 PARAMS에 콜백을 추가하는 것 (일) : 키 입력 후 나무가 다시로드하지만 텍스트 상자 여기

에서 멀리 초점을 훔치는 내 코드입니다 텍스트에 초점을 맞추십시오 :

//*************** 
//When this load finishes the focus is taken away 
//From the text field :(
//*************** 

thisTree.store.load({params:{ 
    search_string:val, 
    callback: function() { 
     this.focus(); /*or Ext.getCmp('search_combo').focus() depending on scoping*/ 
    } 
}});              
+0

이 솔루션은 포커스를 잃어 버리는 약 1 초의 기간을 제외하고는 정확하게 작동합니다. (답변을 주셔서 감사합니다. – neolaser