Dojo:如何在网格的上下文菜单项处理程序中获取行数据?

时间:2010-07-06 18:44:57

标签: dojo dojox.grid

我正在使用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)内部获取哪个菜单被加载的原始行?

3 个答案:

答案 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?