2014-02-08 34 views
5

我試圖添加一個按鈕到我的網格中的列標題下拉菜單。但是,我只想將其添加到具有特定itemId的列中。到目前爲止,我已經開始將按鈕添加到所有列,請參閱下面的代碼。我沒有看到我可以檢查每列的itemId,但它似乎並沒有遍歷列。有沒有解決方法?謝謝!Extjs網格列標題,將下拉菜單項添加到特定列

items:[{ 
      region:'center', 
      xtype:'grid', 
      columns:{ 
        items: COLUMNS, //defined in index.php 
      }, 
      store:'Items', 
      selType: 'checkboxmodel', 
      listeners: { 
        afterrender: function() {   
          var menu = Ext.ComponentQuery.query('grid')[0].headerCt.getMenu(); 
          menu.add([{ 
            text: 'edit', 
            handler: function() { 
              console.log("clicked button"); 
            } 
          }]);   
        } 
      } 
    }], 

回答

8

網格列菜單存在於一個共享所有列的實例中。正因爲如此,您不能僅爲一列添加菜單項。

但是,您可以在此菜單中顯示/隱藏特定列的菜單項。您可以使用菜單beforeshow事件和menu.activeHeader屬性來獲取有關列的信息:

listeners: { 
    afterrender: function(c) {           
     var menu = c.headerCt.getMenu(); 

     // add menu item into the menu and store its reference 
     var menuItem = menu.add({ 
      text: 'edit', 
      handler: function() { 
       console.log("clicked button"); 
      } 
     }); 

     // add listener for beforeshow menu event 
     menu.on('beforeshow', function() { 

      // get data index of column for which menu will be displayed 
      var currentDataIndex = menu.activeHeader.dataIndex; 

      // show/hide menu item in the menu 
      if (currentDataIndex === 'name') { 
       menuItem.show(); 
      } else { 
       menuItem.hide(); 
      } 
     }); 
    } 
} 

撥弄活生生的例子:https://fiddle.sencha.com/#fiddle/3fm

+0

非常感謝你! – alex9311

+0

如何在extjs 3中做到這一點。 – David