2012-10-19 78 views
0

我在依赖组合框中的loadData()函数有问题。 我正在做一张桌子,我可以创建快捷方式并对其进行修改。ExtJS依赖组合框

尝试修改快捷方式并将“选项卡连接URL”传递给“选项卡信息摘要”时会出现此问题。 当我选择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(); 
                  } 
                 } 

     } 

},

谢谢!

回答

0

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

+0

嗨,谢谢!我会尝试你的建议。 – slorenzo