2012-06-25 5 views
0

Моего приложения (MVC) предназначено как таковые с 3-мя вкладки на моем взглядеextjs4 колонка скрыть в TreePanel общие для всех вкладок

Ext.define('App.view.cube.MainView', { 
    extend: 'Ext.panel.Panel', 
    .... 
    layout: 'card', 
    ... 
    dockedItems: [{ 
     xtype: 'panel', 
     items: [{ 
      // a drop down containing 2 choices 
     }] 
    }], 
    items: [{ 
     xtype: 'tabpanel', 
     itemId: 'mmtabs', 
     activeTab: 1, 
     items: [{ 
      title: 'Served', 
      xtype: 'treepanel', // my own xtype extending this xtype 
      id: 'Served :', 
      itemId: '1' 
     }, { 
      title: 'UnServed', 
      xtype: 'treepanel', // my own xtype extending this xtype 
      id: 'UnServed :', 
      itemId: '0' 
     }, { 
      title: 'Total', 
      xtype: 'treepanel', // my own xtype extending this xtype 
      id: 'Total :', 
      itemId: '2' 
     }] 
    }] 
}); 

В принципе выпадающих два варианты должна позволять пользователю просматривать требуемые столбцов в сетка (treepanel). В первый раз, когда приложение загружается, и пользователь переходит к другому варианту в раскрывающемся списке, столбцы не скрываются, как должны. Но если он должен был перейти на другую вкладку, а затем сделать то же самое, все работает так, как предполагается. Я не могу понять проблему.

В коде выше я повторно использовать

xtype : 'treepanel', // my own xtype extending this xtype 

через три вкладок с различными itemIds (я надеюсь, что это нормально).

В моем контроллере я есть функция переключения в вид (скрыть/показать конкретные столбцы) initialview (перебора всех столбцов во всех вкладках и установить соответствующий вид) changeview ссылаться на выпадающий список в моем представлении.

toggleView: function (cubemwwar, viewId) { 
    if ("2" == viewId) { 
     cubemwwar.columns[1].setVisible(false); 
     cubemwwar.columns[2].setVisible(false); 
     cubemwwar.columns[3].setVisible(false); 
     cubemwwar.columns[4].setVisible(true); 
     cubemwwar.columns[5].setVisible(true); 
     cubemwwar.columns[6].setVisible(true); 
    } 
    if ("1" == viewId) { 
     cubemwwar.columns[1].setVisible(true); 
     cubemwwar.columns[2].setVisible(true); 
     cubemwwar.columns[3].setVisible(true); 
     cubemwwar.columns[4].setVisible(false); 
     cubemwwar.columns[5].setVisible(false); 
     cubemwwar.columns[6].setVisible(false); 
    } 
}, // on controller's onlaunch 
initialView: function() { 
    var numTabs = this.getCubeMainView().query('#mmtabs')[0].items.length; 
    for (var i = 0; i < numTabs; i++) { 
     var tab = this.getCubeMainView().query('#mmtabs')[0].items.items[i]; 
     this.toggleView(tab, 1); 


    } 
}, 
// change views based on user selection 
// from the combobox's select event 
changeView: function (combo, rec, idx) { 
    // first time somehow the columns do not hide 
    // hide/show appropriate columns 
    // rec[0].data.id .. .possible values 1 and 2 only. 
    this.toggleView(this.getCubeMainView().query('#mmtabs')[0].getActiveTab(), rec[0].data.id); 
}, 

ответ

0

При запуске я перечислил все вкладки, чтобы они активировали, а затем вернули первый актив. Это решило эту проблему.

for(var i=0;i<numTabs ; i++) 
{ 
    var tab = tabPanel.items.items[i]; 
    this.toggleView(tab,1); 
    tabPanel.setActiveTab(i); 
} 
tabPanel.setActiveTab(0); 
this.startingup = false;