ExtJS - 依赖组合框

时间:2012-10-19 13:09:40

标签: extjs combobox loaddata

我的依赖组合框中的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 个答案:

答案 0 :(得分:0)

存储加载方法是异步的意味着loadData之后的代码会立即执行但数据尚未加载。 您需要在loadData的回调中执行其余逻辑,或者在load事件侦听器中单独执行。