我在onRightClick事件中向我的jqGrid添加上下文菜單時遇到困難。右鍵單擊單元格後,我想從onRightClickRow事件中獲取rowid,iRow和iCol值。將上下文菜單添加到jqGrid的onRightClickRow
但是,我遇到的問題是,我第一次右擊網格中的單元格上下文菜單沒有出現。第二次,我右鍵單擊一個單元格顯示上下文菜單,但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值的方法點擊?
感謝您的幫助。我查看了您引用的帖子,這有點幫助,但我不確定它會讓我獲得iRow和iCol值以及onRightClickRow返回的rowid。我不確定是否必須通過向下行添加上下文菜單,然後使用find(「td」)添加菜單。eq(ColunmNumber) – Abe
@Abe:在此之前我寫過你的建議不是唯一的實現。我不明白你爲什麼需要'iRow'和'iCol'值。 iRow的值可以作爲DOM元素的rowIndex屬性,它對應於所選的行:$(「#」+ trigger.id)[0] .rowIndex'。你需要爲該行中的不同單元創建不同的單元格? – Oleg
@Abe:此外在'onContextMenu'處理程序的內部,您可以檢查'event.target'。它是''元素的DOM。你可以把'iCol'作爲'$ .jgrid.getCellIndex(event.target)'。 – Oleg