Jquery 将上下文菜单添加到jqGrid';s在右键单击行
我在onRightClick事件中向jqGrid添加上下文菜单时遇到困难。右键单击单元格后,我希望从onRightClickRow事件中获取rowid、iRow和iCol值 但是,我遇到的问题是,第一次右键单击网格中的单元格时,关联菜单不会出现。第二次右键单击单元格时,将显示关联菜单,但rowid、iRow和iCol值都适用于右键单击的第一个单元格。所以rowid、iRow和iCol永远不会与右键单击的单元格匹配 对于上下文菜单,我使用jquery.contextmenu.r2.js 这是我的jqGrid代码Jquery 将上下文菜单添加到jqGrid';s在右键单击行,jquery,jqgrid,Jquery,Jqgrid,我在onRightClick事件中向jqGrid添加上下文菜单时遇到困难。右键单击单元格后,我希望从onRightClickRow事件中获取rowid、iRow和iCol值 但是,我遇到的问题是,第一次右键单击网格中的单元格时,关联菜单不会出现。第二次右键单击单元格时,将显示关联菜单,但rowid、iRow和iCol值都适用于右键单击的第一个单元格。所以rowid、iRow和iCol永远不会与右键单击的单元格匹配 对于上下文菜单,我使用jquery.contextmenu.r2.js 这是我的j
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。因此,上下文菜单的创建应该以同样的方式进行。我使用自己的动态上下文菜单接近中描述的方法。我首先向导航栏添加按钮,然后基于导航栏的按钮创建上下文菜单。因此,用户不需要滚动到顶部或底部进行编辑、删除等操作。