开发中碰到的ext小问题

阅读更多
一、extjs中碰到的一个问题,就是关闭tabpanel后,再打开,tabpanel中的组件就不显示了。
因为tabpanel默认是关闭后控件销毁,再打开就是重新建了个面板,而面板内的组件如果只是初始化了一次,则再次打开面板,就无法显示其中的组件。自己总结了3种解决方法

1、每次打开tabpanel的时候,都初始化一次tabpanel面板中的组件,然后添加进去。即面板销毁后再次被创建的时候
里面的组件也再次被创建。

如果仅仅初始化一次面板中的组件,当面板关闭后再次打开,添加组件进去,就会报 c.getPositionEl().dom is undefined 错误,因为关闭面板时,已经销毁了组件。


2、tabpanel中item直接是gridpanel  formpanel等组件时,将tabpanelautoDestroy属性改为false,默认为true,同时还需要重写listeners的remove事件方法 remove:function(t,c){c.hide()} 这样,当关闭面板时,面板内的元素并没有销毁,只是隐藏了。再次打开面板,即使面板内元素仅仅初始化过一次,因为没有销毁,所以可以再次添加进去显示。

3、tabpanel中item是panel并且为 layout='border'  ,位于子Panel中的组件,
tabpanel只需要 autoDestroy=true,不要修改remove listeners, tabpanel的 item(panel) 改为 closeAction:'hide'
并且 生成的tab不能有相同的id。

二、combox 设置默认值。

listeners:{
      afterrender:function(){
                 Ext.getCmp('CHARTS').setValue('943');
  Ext.getCmp('CHARTS').setRawValue('客户押金');
                 chartsstore.load();
            }
}


或者

store修改load事件
listeners: {
                load: function() {
                    combobox.setValue("xx");
                }
            }


store.load({
    callback : function(records) {
    combo.setValue("4");
    }
    });


三、combox 返回值
   {
     displayField:'NAME',
     valueField: 'ID',
     id:
     name
   }
没有设置hiddenName时,
通过 Ext.getCmp('SETTLEMODE').getValue();获取valueField的值
Ext.getCmp('costbatchForm').getForm().getValues() 无法获取

  {
     displayField:'NAME',
     valueField: 'ID',
     id:
     name
     hiddenName:""
   }

可以通过 Ext.getCmp('costbatchForm').getForm().getValues() 获取。提交的参数名即是
hiddenName 获取 valueField的值
 


四 textfield设置显示值,和获取值
setValue('xxx') 提交表单时返回的值
setRawValue('yyy')显示值

你可能感兴趣的:(开发中碰到的ext小问题)