ExtJS - 依赖组合框
Posted
技术标签:
【中文标题】ExtJS - 依赖组合框【英文标题】:ExtJS - dependent combobox 【发布时间】:2012-10-10 02:39:35 【问题描述】:我的依赖组合框中的 loadData() 函数有问题。 我正在做一张桌子,在那里我可以创建快捷方式并对其进行修改。
尝试修改快捷方式并将“Tab con URL”传递给“Tab con Info de sistema”时会出现问题。 当我选择 id="sistemas" 的组合时,在 loadData 函数中检测到错误。没有数据加载给我带来了商店中的 GetMenu 功能。 返回 GetMenu 函数的数据未加载到存储中。
我不知道为什么。这是我的代码,谁能帮帮我?
店铺:
var cmb_menu = new Ext.data.SimpleStore(
fields : ['id', 'menu'],
data : menu
);
代码:
xtype : "radio",
boxLabel : "Tab con Info de sistema",
value : "oneway",
tabIndex : 1,
id :'IdCheck',
name : "rt_rt_radiobutton",
listeners:
check: function()
Ext.getCmp("sistemas").enable();
Ext.getCmp("iconUrl").disable();
,
xtype:"radio",
boxLabel:"Tab con URL",
value:"twoway",
id: 'idCheckedUrl',
tabIndex:1,
name:"rt_rt_radiobutton",
listeners:
check: function (ctl, val)
if(val)
Ext.getCmp("iconUrl").enable();
Ext.getCmp("sistemas").disable();
Ext.getCmp("sistemas").clearValue();
Ext.getCmp("menus").clearValue();
Ext.getCmp("items").clearValue();
Ext.getCmp("subMenu").clearValue();
Ext.getCmp("menus").disable();
Ext.getCmp("items").disable();
Ext.getCmp("subMenu").disable();
,
xtype : 'combo',
store : cmb_sistemas,
hiddenName : 'id_sistema',
allowBlank : false,
value : sistemId,
mode : 'local',
fieldLabel : 'Sistemas',
disabled : true,
name : 'sistemas',
id : 'sistemas',
anchor : '90%',
displayField : 'sistema',
triggerAction: 'all', //rdiaz
emptyText : 'Seleccione un sistema',//rdiaz
editable : false, //rdiaz
valueField : 'id',
listeners :
select: function ()
idSistema = this.getValue();
nombreSistema= this.getRawValue();
var menu = Ext.getCmp("menus");
iMenu = getMenu(idSistema);
//menu.store.clear();
menu.store.loadData(iMenu, true);
menu.enable();
var items = Ext.getCmp("items");
//menu.clearValue();
//menu.store.removeAll();//rdiaz
items.clearValue();
items.disable();
var subMenues= Ext.getCmp("subMenu");
subMenues.clearValue();
subMenues.disable();
,
xtype : 'combo',
store : cmb_menu,
hiddenName : 'id',
valueField : 'id',
value : menuID,
mode : 'local',
allowBlank : false,
fieldLabel : 'menu',
disabled : true,
triggerAction: 'all',//rdiaz
emptyText : 'Seleccione un menu',//rdiaz
editable : false, //rdiaz
name : 'menus',
id : 'menus',
anchor : '90%',
displayField : 'menu',
listeners :
select: function ()
selectedMenu = this.getValue();
Ext.getCmp("subMenu").clearValue();
//alert(selectedMenu);
idSistema = Ext.getCmp("sistemas").getValue();
mItems = getItemsMenu(selectedMenu, idSistema);
if($.trim(selectedMenu) == "000060000000010000")
var subMenues= Ext.getCmp("subMenu");
subMenues.store.loadData(mItems);
subMenues.enable();
var items = Ext.getCmp("items");
items.clearValue();
items.enable();
else
var subMenues= Ext.getCmp("subMenu");
subMenues.store.loadData(mItems);
subMenues.disable();
var items = Ext.getCmp("items");
//alert(mItems);
items.store.loadData(mItems);
items.clearValue();
items.enable();
,
谢谢!
【问题讨论】:
【参考方案1】:Store 加载方法是异步的,即 loadData 之后的代码会立即执行,但数据尚未加载。 您需要在 loadData 的回调中执行其余逻辑,或者在加载事件侦听器中单独执行。
【讨论】:
以上是关于ExtJS - 依赖组合框的主要内容,如果未能解决你的问题,请参考以下文章