道場1.5。次のように定義されたrowMenuを持つ拡張グリッドがあります。
<div dojoType="dijit.Menu" id="rowMenu" style="display: none;">
<div dojoType="dijit.MenuItem" id="menuUsers">Add/Edit Users</div>
</div>
そのメニュー項目の onclick を次のように聞きます。
dojo.connect(dijit.byId("menuUsers"), "onClick", addEditUsers);
addEditUsers で e.rowIndex を使用しようとすると、未定義です。ユーザーが右クリックした行を取得する方法を理解できた唯一の方法は、別の行リスナーによるものです。
dojo.connect(dijit.byId("grid"), "onRowContextMenu", rowContextMenu);
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() はユーザーが最後にクリックした行であるため、使用できないことに注意してください。