2011-10-28 14 views
0

Dojo 1.5。私はこのようなそのメニュー項目のためのonclickを聴くdojo EnhancedGridコンテキストメニュー - メニュー項目のonclickイベントからrowIndexを取得する方法は?

<div dojoType="dijit.Menu" id="rowMenu" style="display: none;"> 
    <div dojoType="dijit.MenuItem" id="menuUsers">Add/Edit Users</div> 
</div>  

:私はrowMenuがそうのように定義されている強化されたグリッド持って、私はaddEditUsersでe.rowIndexを使用しようとすると

dojo.connect(dijit.byId("menuUsers"), "onClick", addEditUsers); 

を、それは未定義です。私は、ユーザーが右のクリック行を取得する方法を見つけ出すことができました唯一の方法は、別の行リスナーである:rowContextMenuから

dojo.connect(dijit.byId("grid"), "onRowContextMenu", rowContextMenu); 

()、e.rowIndexが利用可能ですので、私は得ることができます

var item = e.grid.getItem(e.rowIndex); 
console.log(e.grid.store.getValue(item, 'name')); // this will show the value of a 'name' column for the row the user right clicked. 

を使用して行データは、だから私は(例えばcurrentContextItem)/グローバルオブジェクトを切り替えるためにこれを使用することができますが、お奨めは、より簡単なアプローチでありますように思えます。コンテキストメニュー項目リスナーからrowIndex/dataに直接アクセスする方法はありませんか?私はgrid.selection.getSelected()を使用できないことに注意してください。これは、ユーザーが最後にクリックした行が残っているからです。

答えて

2

AFAIK、他に解決策はありません。実際、私は数か月前に同じ質問をしましたが、それが私が得た唯一の解決策でした。

+0

私はもう少し掘り下げて、あなたが正しいと確信していますので、これを受け入れています。 – czervik

2

私は同様の質問をしました。私は、ユーザーがデータグリッドから右クリックしたアイテムを削除し、そのアイテムをデータストアから削除することを可能にするコンテキストメニューを作成したかったのです。あなたの助けと他のいくつかのサイトでは、私は次のコードを思いついた。

var selectedItem; // This has to be declared "globally" outside of any functions 

function onRowContextMenuFunc(e) { 
    grid5_rowMenu.bindDomNode(e.grid.domNode); 
    selectedItem = e.grid.getItem(e.rowIndex); 
} 

function gridRowContextMenu_onClick(e) { 
    store3.deleteItem(selectedItem); 
} 

<div dojoType="dijit.Menu" id="grid5_rowMenu" jsId="grid5_rowMenu" style="display: none;"> 
    <div dojoType="dijit.MenuItem" onClick="gridRowContextMenu_onClick">Delete</div> 
    <div dojoType="dijit.MenuItem">Cancel</div> 
</div> 

。 onRowContextMenuFuncあなたの宣言に:あなたがプログラム的にあなたのデータグリッドを作成した場合

<div id="grid" dojoType="dojox.grid.DataGrid" jsId="grid5" store="store3" structure="layoutStructure" rowsPerPage="40" onRowContextMenu="onRowContextMenuFunc"></div> 

もちろん、あなただけonRowContextMenu追加します。

+0

編集:ユーザーが行を右クリックしてからキャンセルをクリックするか、コンテキストメニューを非表示にしてデータグリッドのBLANK領域を右クリックして、削除メニューオプションをクリックすることができるという点で、以前に右クリックされたアイテムは削除されます。同じ問題がある場合は、私の変更されたコード[こちら]をチェックしてください(http://stackoverflow.com/questions/8187693/dojo-datagrid-context-menu-onrowcontextmenu-displays-even-when-right-clicking- in/8216093#8216093) –

関連する問題