1

我正在使用 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) 中获取弹出菜单的原始行?

4

3 回答 3

3

您可以使用事件网格对象:

 var item = e.grid.getItem(e.rowIndex);
于 2010-09-09T04:29:55.490 回答
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 //
于 2011-11-17T22:56:19.770 回答
0

你试过e.rowIndex吗?

于 2010-09-03T09:24:02.070 回答