我正在使用Dojo 1.4。
在标记中给出dojox.grid.DataGrid:
<table jsId="grid1" dojoType="dojox.grid.DataGrid"
structure="layout"
delayScroll="true"
columnReordering="true"
selectable="true"
onRowDblClick="onRowDblClick"
onRowContextMenu="onRowContextMenu"
headerMenu="grid1_headerMenu"
>
<div dojoType="dijit.Menu" id="grid1_rowMenu" jsId="grid1_rowMenu" style="display: none;">
<div dojoType="dijit.MenuItem" onClick="gridRowContextMenu_onClick">Edit</div>
</div>
</table>
我还没有找到一种更好的方法来显示网格的上下文菜单:
function onRowContextMenu(e) {
grid1_rowMenu.bindDomNode(e.grid.domNode);
}
它工作正常,弹出菜单并调用函数'gridRowContextMenu_onClick'。
function gridRowContextMenu_onClick(e) {
// how to get a row data???
}
我的问题是如何在menuitem的onClick处理程序(gridRowContextMenu_onClick)内部获取哪个菜单被加载的原始行?
答案 0 :(得分:3)
您可以使用事件网格对象:
var item = e.grid.getItem(e.rowIndex);
答案 1 :(得分:1)
我有一个类似的问题。我想创建一个上下文菜单,允许用户从数据网格中删除他们右键单击的项目,并从数据存储区中删除该项目。认为它应该非常简单,在您的帮助和其他一些网站上,我想出了以下代码。我希望这有助于将来的某个人。
<强>的Javascript 强>
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);
}
<强> HTML 强>
<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>
和
<div id="grid" dojoType="dojox.grid.DataGrid" jsId="grid5" store="store3" structure="layoutStructure" rowsPerPage="40" onRowContextMenu="onRowContextMenuFunc"></div>
当然,如果您以编程方式创建DataGrid
,则只需在声明中添加onRowContextMenu: onRowContextMenuFunc
,就像在上面的问题中所做的那样。
最后,要真正获得有关该项目的信息:
console.log(e.grid.store.getValue(selectedItem, 'type'));
console.log(e.grid.store.getValue(selectedItem, 'color'));
// Where type and color are fields specified in the DataGrid Layout Structure //
答案 2 :(得分:0)
您是否尝试过e.rowIndex?