過去 3 時間、グリッド内にメニューを作成しようとしました (img: Menu inside a gridを参照)。しかし、私の人生ではhandlers
、メニュー内で動作させることはできません。
編集 (明確化): すべてのレコード行で、グリッド内のアクション アイコン用のスペースを増やしたいです。onClick
したがって、追加のスペースを作成するために、各グリッド行内にメニューを配置したいと考えています(画像を参照)。これにより、無制限のアクション アイコンをドロップダウン メニューに追加できます。
私はこのようなメニューを作成しました (これは正しくないと思いますが、他に方法がわかりません):
ux.RGridPanel = Ext.extend(Ext.grid.GridPanel, {
newMenu: new Ext.menu.Menu({
id: 'mainMenu',
style: {
overflow: 'visible' // For the Combo popup
},
items: [
{
text: 'I like Ext',
checked: true // when checked has a boolean value, it is assumed to be a CheckItem
},
{
iconCls: 'sitemap_16',
text: 'Test 2',
tooltip: '',
handler: function(a,b){
console.log(this.ownerCt); //All this stuff is not working
console.log(a);
console.log( this.parent);
this.parent.showSelectDialog //This is what is causing me issues, this won't work.
}
},
[...]
]
});
内部でハンドラーを呼び出そうとしていますRGridPanel
:
showSelectDialog: function(grid, rowIndex, colIndex) {}
内部でナイスメソッドを使用したいRGridPanel
ので、パラメーターを渡す必要はありません。これを修正するために誰かが私を正しい方向に向けることができますか?!
編集:::私はこれを次の内部で使用して、自分でいくらか遠くまで来ましたGridPanel
:
loadMenu: function(){
return new Ext.menu.Menu({
scope:this,
id: 'mainMenu',
style: {
overflow: 'visible' // For the Combo popup
},
items: [
{
iconCls: 'sitemap_16',
text: 'Test 2',
handler:this.showSelectImportFileDialog, //this works, but it does not pass the required params
と
initComponent: function() {
this.newMenu = this.loadMenu();
そしてcog
アイコンで:
handler: function (view, record, el, i, e) {
view.newMenu.showAt(e.getXY());
},
呼び出すことができるようになりましshowSelectDialog
たが、デフォルトのパラメーター (は機能していません。メニュー内から(grid, rowIndex, colIndex)
呼び出すためです。showSelectDialog