2012-02-14 7 views
0

ExtJS 4. グリッドとエディタがあります。エディタにはリスナーがあります。リスナーからグリッドにアクセスする方法は?グリッドエディタからグリッドを選択する方法は?

var grid = Ext.create('Ext.grid.Panel',{ 
plugins: [Ext.create('Ext.grid.plugin.CellEditing', { 
    clicksToEdit: 2, 
    pluginId: 'cellplugin' 
})], 
columns: [ 
    { 
    header: 'Name', 
    dataIndex: 'name', 
    editor: { 
     xtype: 'textfield', 
     listeners: { 
      specialkey: function(field, e) { 
       if (e.getKey() == e.ENTER) { 
        !!!NEED TO ACCESS GRID HERE, FOR EXAMPLE IN VARIABLE!!! 
        var grid = SOME?CODE?; 
       } 
      } 
     } 
    }}, 
    // ... 
], 
// ... 

});

このグリッドからエディタをマージすることはできません。したがって、このコマンドは普遍的でなければなりません。

答えて

1
var grid = Ext.create('Ext.grid.Panel',{ 
itemId : 'gridPanel', //we need to call your grid somehow 
plugins: [Ext.create('Ext.grid.plugin.CellEditing', { 
    clicksToEdit: 2, 
    pluginId: 'cellplugin' 
})], 
columns: [ 
    { 
    header: 'Name', 
    dataIndex: 'name', 
    editor: { 
     xtype: 'textfield', 
     listeners: { 
      specialkey: function(field, e) { 
       if (e.getKey() == e.ENTER) { 
        var grid = this.up('#gridPanel'); //and access it like this 
       } 
      } 
     } 
    }}, 
    // ... 
], 
// ... 
+0

すべてのグリッドにitemIdを追加しないとよいでしょう。 –

+0

そのような場合、xtypeセレクタ 'this.up( 'gridpanel')' – Mchl

+0

を使用することができます。 'code'this.up( '#gridPanel')' code'を使用してもグリッド変数は未定義です。 'code'Only Ext.getCmp()' code'だけが動作します。私はそうではありません。 –

関連する問題