将上下文菜单添加到jqGrid的onRightClickRow

时间:2011-11-10 20:29:34

标签: jquery jqgrid

我在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>

有没有办法在右键单击上下文菜单中添加onRightClickRow事件,以便我可以获取单击的单元格的rowid,iRow和iCol值?

1 个答案:

答案 0 :(得分:4)

查看包含the old answerthe demo。我希望它有助于解决您的问题。我确信contextMenuloadComplete的绑定不是解决问题的唯一方法,但它的效果非常好。

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