Jquery 将上下文菜单添加到jqGrid';s在右键单击行

Jquery 将上下文菜单添加到jqGrid';s在右键单击行,jquery,jqgrid,Jquery,Jqgrid,我在onRightClick事件中向jqGrid添加上下文菜单时遇到困难。右键单击单元格后,我希望从onRightClickRow事件中获取rowid、iRow和iCol值 但是,我遇到的问题是,第一次右键单击网格中的单元格时,关联菜单不会出现。第二次右键单击单元格时,将显示关联菜单,但rowid、iRow和iCol值都适用于右键单击的第一个单元格。所以rowid、iRow和iCol永远不会与右键单击的单元格匹配 对于上下文菜单,我使用jquery.contextmenu.r2.js 这是我的j

我在onRightClick事件中向jqGrid添加上下文菜单时遇到困难。右键单击单元格后,我希望从onRightClickRow事件中获取rowid、iRow和iCol值

但是,我遇到的问题是,第一次右键单击网格中的单元格时,关联菜单不会出现。第二次右键单击单元格时,将显示关联菜单,但rowid、iRow和iCol值都适用于右键单击的第一个单元格。所以rowid、iRow和iCol永远不会与右键单击的单元格匹配

对于上下文菜单,我使用jquery.contextmenu.r2.js

这是我的jqGrid代码

jQuery("#list").jqGrid({
    url:urlPath,
    datatype:"json",
    mtype:'GET',
    jsonReader: {
        root: function (obj) { return obj.result; },
        id: dataID,
        repeatitems: false,
        page:  function(obj) { return 1; },
        total: function(obj) { return 1; },
        records: function(obj) { return obj.result.length; }        
    },
    colNames: columnNames,
    colModel: columnModel,
    onRightClickRow: function (rowid, iRow, iCol, e) {
        jQuery("#list").contextMenu('rightClickMenu', {
            bindings: {
                'DisplayiRow': function(t) {
                    alert('DisplayiRow: ' + iRow);   
                },
                'DisplayiCol': function(t) {
                    alert('DisplayiCol: ' + iRow);
                }
            }
        })
    },
    scroll:1,
    headertitles: true,
    pager: '#pager',
    shrinkToFit: false,
    autowidth: true,
    height: gridHeight,
    sortable: true,
    sortorder: 'desc',
    viewsortcols:[true,'vertical', true],
    viewrecords: true,
    gridview: true,
    loadonce: true
  });
  jQuery("#list").jqGrid('filterToolbar', {searchOnEnter:false,defaultSearch:'cn'});
});
HTML是

<div class="contextMenu" id="rightClickMenu" style="display:none">
    <ul>
       <li id="DisplayiRow">
           DisplayiRow</li>
       <li id="DisplayiCol">
           DisplayiCol</li>
   </ul>
</div>

  • 显示箭头
  • DisplayiCol
是否有方法将右键单击上下文菜单添加到onRightClickRow事件中,以便获得所单击单元格的rowid、iRow和iCol值?

查看包含哪些内容。我希望这将有助于解决你的问题。我确信,在
loadComplete
内部绑定
contextMenu
并不是问题的唯一解决方案,但效果非常好


此外,我建议您使用jqGrid源代码的
plugins
子目录中的上下文菜单插件。这是使用jqGrid测试的版本,我认为使用另一个版本没有任何意义。

谢谢您的帮助。我已经看过了您引用的帖子,它有点帮助,但我不确定它是否允许我获取iRow和iCol值以及onRightClickRow返回的rowid。我不确定我是否必须将上下文菜单添加到每一个单元格中,方法是向下一行,然后添加带有find(“td”)的菜单。eq(ColunmNumber)@Abe:我之前写过你,我建议的并不是唯一的实现。我不明白为什么您需要
iRow
iCol
值。
iRow
的值可以作为所选行对应的DOM元素的
rowIndex
属性获得:
$(“#”+trigger.id)[0]。rowIndex
。您需要为行中的不同单元格设置不同的上下文吗?@Abe:此外,在
onContextMenu
处理程序中,您可以检查
event.target
。它是
元素的DOM。您可以通过
$.jgrid.getCellIndex(event.target)
获得
iCol
。嗨,Oleg,很抱歉我不清楚,但我正在尝试为行中的不同单元格获取不同的上下文菜单。根据行/列位置,我将更改上下文菜单中显示的选项。我将尝试您的建议,检查onContextMenu中的event.target处理程序。@Jesstone:我自己不使用JqSuite,但它应该使用相同的开源JavaScript产品jqGrid。因此,上下文菜单的创建应该以同样的方式进行。我使用自己的动态上下文菜单接近中描述的方法。我首先向导航栏添加按钮,然后基于导航栏的按钮创建上下文菜单。因此,用户不需要滚动到顶部或底部进行编辑、删除等操作。