Додзё 1.5. У меня есть расширенная сетка, в которой rowMenu определено так:
<div dojoType="dijit.Menu" id="rowMenu" style="display: none;">
<div dojoType="dijit.MenuItem" id="menuUsers">Add/Edit Users</div>
</div>
Я слушаю клик по этому пункту меню следующим образом:
dojo.connect(dijit.byId("menuUsers"), "onClick", addEditUsers);
Если я попытаюсь использовать e.rowIndex в addEditUsers, он не определен. Единственный способ выяснить, как получить строку, по которой пользователь щелкает правой кнопкой мыши, - это отдельный слушатель строки:
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 / из слушателя пункта контекстного меню? Обратите внимание, что я не могу использовать grid.selection.getSelected (), потому что это та строка, по которой пользователь щелкнул последний раз.