Контекстное меню JQGrid для каждой ячейки - PullRequest
1 голос
/ 22 июня 2011

Я использую контекстное меню, чтобы позволить пользователю выполнять различные действия с ячейкой в ​​JQGrid:

function showContextMenu(rowId)
{
    menu1 = [ {'View':function(menuItem,menu) { alert("You clicked View!"); } },
              $.contextMenu.separator, 
              {'Upload':function(menuItem,menu) { alert("You clicked Upload!"); }},
                $.contextMenu.separator,
                {'Remove':function(menuItem,menu) { alert("You clicked Remove!"); }}
               ];


    $('#' + rowId).contextMenu(menu1,{theme:'vista'}); 

Событие

onRightClickRow : function(rowid,iRow,iCol,e){
     showContextMenu(rowid,iCol);
}

Это работает, но неуклюже: проблема в том, что ему нужно сделать двойнойщелчок правой кнопкой - потому что при первом щелчке (если я правильно понял) - функция привязки и только во втором - отображение меню.Я пытался использовать

gridComplete : function {
 var dataIds = $('#list').jqGrid('getDataIDs');
for (var i = 0;i < dataIds.length; i++) {
showContextMenu(dataIds[i]);
 }

Но в этом случае я не могу получить iCol.Какое решение может быть?Благодаря.

1 Ответ

1 голос
/ 04 октября 2011

Необходимо указать значения для строк и ячеек.

var dataIds = jQuery('#list').jqGrid('getDataIDs');
 var countCols = jQuery('#list').jqGrid('getGridParam', 'colNames').length;
 for (var i = 0;i < dataIds.length ; i++) {
    for (j=0;j<= countCols;j++)
       showContextMenu(dataIds[i],i+1,j);
 }

И изменить функцию

function showContextMenu(rowid,iRow,iCol){
        menu1 = [ {'Yahoooo!':function(menuItem,menu) { 
        alert(rowid+" — "+iRow+" — "+iCol);
        } }];
jQuery("tr#"+rowid+" td").eq(iCol).contextMenu(menu1,{theme:'osx'});};
...