2015-07-17 7 views
0

Как использовать setactivetab для сетки в tab.panel? Мне нужна моя загрузочная кнопка/сетка, чтобы оставаться на панели вкладок, из которой она действует. Когда я нажимаю на кнопку со второй вкладки, я хочу установить вторую вкладку. Вместо этого он возвращается к первой вкладке. Ниже мой код голых костей, как я раздел мою попытку использовать setactivetab:sencha extjs4.1 ext.tab.panel activetab

<script type="text/javascript"> 
//begin menu bar 
Ext.define('MainNavBar.view.ui.MainNavPanel', { 
    extend: 'Ext.tab.Panel', 
    height: 170, 
    width: 1000, 
    activeTab: 0, 
    initComponent: function() {  
     var me = this; 
     me.items = [ 
      { 
       xtype: 'panel', 
       height: 145, 
       width: 684, 
       title: 'Bus Data', 
       dockedItems: [ 
        { 
         xtype: 'toolbar', 
         height: 145, 
         width: 938, 
         dock: 'top', 
         items: [ 

          { 
           xtype: 'buttongroup', 
           height: 140, 
           title: 'Bid', 
           columns: 2, 
           layout: { 
            columns: 2, 
            type: 'table' 
           }, 
           items: [ 
            { 
             xtype: 'button', 
             text: 'Bid Doc', 
             handler: function(){window.location = '/biddoc/';}           
            }, 
           ] 
          }, 
         ] 
        } 
       ] 
      }, 
      { 
       xtype: 'panel', 
       height: 115, 
       title: 'Reporting', 
       dockedItems: [ 
        { 
         xtype: 'toolbar', 
         height: 140, 
         dock: 'top', 
         items: [ 
          { 
           xtype: 'buttongroup', 
           height: 140, 
           title: 'Sales Data', 
           columns: 2, 
           layout: { 
            columns: 2, 
            type: 'table' 
           }, 
           items: [ 
            { 
             xtype: 'button', 
             text: 'Batch', 
             handler: function(){window.location = '/salesdatabatch/';} 
            } 
           ] 
          } 
         ] 
        } 
       ] 
      }, 

     ]; 
     me.callParent(arguments); 
    } 
});  
Ext.define('MainNavBar.view.MainNavPanel', { 
    extend: 'MainNavBar.view.ui.MainNavPanel', 

    initComponent: function() { 
     var me = this; 
     me.callParent(arguments); 
    } 
}); 
Ext.Loader.setConfig({ 
    enabled: true 
}); 
Ext.application({ 
    name: 'MainNavBar', 
    launch: function() { 
     Ext.QuickTips.init(); 

     var cmp1 = Ext.create('MainNavBar.view.MainNavPanel', { 
      renderTo: menu 
     }); 
     cmp1.show(); 
    } 
}); 
//end menu bar 

     </script> 
+0

вы собираетесь сделать это с кодом являются: обработчик: функция() {window.location = «/ biddoc /»;}? –

+0

Попробуйте добавить xtype для вашего 'MainNavBar.view.ui.MainNavPanel' xtype:' mainNavPanel'. С функцией обработчика выполните следующее: ** this.up ('mainNavPanel) .setActiveTab (0 или 1); ** для соответствующего индекса –

+0

ok, поэтому я добавил xtype: mainNavPanel в MainNavBar.view.ui.MainNavPanel в строке 3, как this: Ext.define ('MainNavBar.view.ui.MainNavPanel', { xtype: mainNavPanel, теперь обработчик, как я могу добавить this.up ('mainNavPanel) .setActiveTab (0 или 1), в обработчик: function() {window.location = '/ biddoc /';}? – Kraig1234

ответ

0

Lets собрать все, что мы обсуждали здесь и сделать правильный ответ.

@ Lorenz Meyer имеет хорошую точку там. У вас проблемы с архитектурой, и вы можете решить это, например, Ext.Ajax.request({/** code here **/});. Поэтому нет перенаправления.
Если вам нужен хороший пример, как это сделать, обратитесь к этому: Extjs - Servlets

Но вы не просили проблемы с архитектурой, так что это мой ответ.

Так что, немного подумав, я только что исправил ваш код. Пожалуйста, обратите внимание, и если его что-то, что вам нравится это просто отметьте, как ответил:

Ext.define('MainNavBar.view.ui.MainNavPanel', { 
    extend: 'Ext.tab.Panel', 
    height: 170, 
    width: 1000, 
    activeTab: 0, 
    initComponent: function() {  
     var me = this; 
     me.items = [ 
      { 
       xtype: 'panel', 
       height: 145, 
       width: 684, 
       title: 'Bus Data', 
       dockedItems: [ 
        { 
         xtype: 'toolbar', 
         height: 145, 
         width: 938, 
         dock: 'top', 
         items: [ 

          { 
           xtype: 'buttongroup', 
           height: 140, 
           title: 'Bid', 
           columns: 2, 
           layout: { 
            columns: 2, 
            type: 'table' 
           }, 
           items: [ 
            { 
             xtype: 'button', 
             text: 'Bid Doc', 
             handler: function(){window.location = '/biddoc/';}           
            }, 
           ] 
          }, 
         ] 
        } 
       ] 
      }, 
      { 
       xtype: 'panel', 
       height: 115, 
       title: 'Reporting', 
       dockedItems: [ 
        { 
         xtype: 'toolbar', 
         height: 140, 
         dock: 'top', 
         items: [ 
          { 
           xtype: 'buttongroup', 
           height: 140, 
           title: 'Sales Data', 
           columns: 2, 
           layout: { 
            columns: 2, 
            type: 'table' 
           }, 
           items: [ 
            { 
             xtype: 'button', 
             text: 'Batch', 
             handler: function(){window.location = '/salesdatabatch/';} 
            } 
           ] 
          } 
         ] 
        } 
       ] 
      } 
     ], 
     listeners: { 
      afterrender: function(component, eOpts) { 
       var urlInfo = document.location.href; 
       if(urlInfo.contains('salesdatabatch')){ 
        component.setActiveTab(1); 
       } 
       if(urlInfo.contains('biddoc')){ 
        component.setActiveTab(0); 
       } 
      } 
     }, 
     me.callParent(arguments); 
    } 
});