开发中碰到的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')显示值