2011-11-10 36 views
2

我在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值的方法點擊?

回答

4

看看the old answer其中包含the demo。我希望這將有助於解決您的問題。我確信loadComplete裏面contextMenu的綁定並不是問題的唯一解決方案,但它工作得很好。

此外,我建議您使用jqGrid源的plugins子目錄中的上下文菜單插件。這是使用jqGrid測試的版本,我認爲沒有意義使用另一個版本。

+0

感謝您的幫助。我查看了您引用的帖子,這有點幫助,但我不確定它會讓我獲得iRow和iCol值以及onRightClickRow返回的rowid。我不確定是否必須通過向下行添加上下文菜單,然後使用find(「td」)添加菜單。eq(ColunmNumber) – Abe

+0

@Abe:在此之前我寫過你的建議不是唯一的實現。我不明白你爲什麼需要'iRow'和'iCol'值。 iRow的值可以作爲DOM元素的rowIndex屬性,它對應於所選的行:$(「#」+ trigger.id)[0] .rowIndex'。你需要爲該行中的不同單元創建不同的單元格? – Oleg

+0

@Abe:此外在'onContextMenu'處理程序的內部,您可以檢查'event.target'。它是'​​'元素的DOM。你可以把'iCol'作爲'$ .jgrid.getCellIndex(event.target)'。 – Oleg

相關問題