Extjs關於tabpanel的 bug修改

 這篇文章主要是講 deferredRender 這個屬性的。
 bug描述:第一次進入頁面之後沒有問題,但是Tab來回切換之後每個items裏的Panel就不加載了。
 經過修改,問題找到。源代碼如下:
 
 Ext.onReady(function(){
     Ext.QuickTips.init();
     var tabs2=new Ext.TabPanel(
     {renderTo:main,
     
      activeTab:0,
     
     
      activeTab:1,
     
      plain:true,
      defaults:{autoHeight:true},
      items:[
            new Ext.Panel(formDetail),
            new Ext.Panel(formHandle),
            new Ext.Panel(transcribeReply),
            new Ext.Panel(waitingUserList),
            new Ext.Panel(subFormList),
            new Ext.Panel(prtFormList),
            new Ext.Panel(attachmentList)
      ]
     }
     );
 }
);


我在plain:true,之後 deferredRender:false,問題迎刃而解。
在創建Ext.TabPanel時deferredRender配置項經常會被忽略。該配置項的默認值是true。true表示只有在用戶第一次訪問選項卡時,該選項卡的panel纔會被渲染。 所以當我們有可能使用腳本操作選項卡時,謹記將該配置項設置爲false。
在FormPanel中使用TabPanel,如果在TabPanel中不定義deferredRender的值爲false,那麼,當你使用Load方法爲Form加載數據,或使用setValue爲沒有激活過的Panel的控件賦值時,將會發生錯誤。
原因是,在默認設置下deferredRender爲true,TabPanel並不會渲染所有Panel上的控件,只有在該Panel被激活時才渲染控件,所以當你爲這些控件設置數據時,將會找不到這些控件,會出現錯誤。
因而,在FormPanel中使用TabPanel,一定要在TabPanel中設置deferredRender的值爲false,強制TabPanel在Layout渲染時同時渲染所有Panel上的控件。


額外福利:
Ext.QuickTips.init();    這一行代碼的意義:QuickTips的作用是讀取標籤中的ext:qtip屬性,併爲它賦予顯示提示的動作。
renderTo 與  applyTo的區別:applyTo是將組件加在了指定元素之後,而renderTo則是加在指定元素之內
plain:true    一種使用簡單的純色樣式,主要應用於Window樣式上,此時只要此項的baseCls設置爲x-plain,就可以達到純色效果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章