2011-11-10 32 views
2

onRightClickイベント内のjqGridにコンテキストメニューを追加することができません。セルを右クリックした後、onRightClickRowイベントからrowid、iRow、およびiColの値を取得したいと思います。jqGridのonRightClickRowにコンテキストメニューを追加する

しかし、私が経験している問題は、グリッド内のセルを右クリックするとコンテキストメニューが表示されないことです。 2回目に、コンテキストメニューが表示されたセルを右クリックしますが、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> 

は、私がいたセルのROWID、iRow、およびICOL値を得ることができるようにonRightClickRowイベントに右クリックしてコンテキストメニューに追加する方法がありますですクリックした?

答えて

4

the old answerを見ると、the demoが含まれています。私はあなたの問題を解決するのに役立つことを願っています。 loadCompleteの中のcontextMenuの束縛は、問題の唯一の解決策ではないと確信していますが、それは非常にうまくいきます。

また、jqGridソースのサブディレクトリpluginsのコンテキストメニュープラグインを使用することをお勧めします。これはjqGridでテストされたバージョンで、別のものを使用する意味がありません。

+0

ありがとうございました。あなたが参照した投稿を見てきましたが、少し役に立ちましたが、iRowとiColの値をonRightClickRowが返すROWIDとともに取得できるかどうかはわかりません。 eq(ColunmNumber) – Abe

+0

@Abe:私はあなたの前にあなたが書いたことを書いています。唯一の実装ではありません。なぜあなたが 'iRow'と' iCol'値を必要とするのか分かりません。 '$("# "+ trigger.id)[0] .rowIndex'に対応するDOM要素の' rowIndex'プロパティとして取得できる 'iRow'の値です。あなたは行の異なる細胞の異なるcontexmenusを持っている必要がありますか? – Oleg

+0

@Abe:さらに、 'onContextMenu'ハンドラの中で' event.target'を調べることができます。それは '​​'要素のDOMです。 'iCol'を' $ .jgrid.getCellIndex(event.target) 'として得ることができます。 – Oleg