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,就可以达到纯色效果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章