В JQGrid, как я могу отобразить контекстное меню при щелчке левой кнопкой мыши? - PullRequest
0 голосов
/ 24 января 2012

Hy,

В моем приложении я использую инструмент JQGrid для отображения списков.

Мне нужно показывать контекстное меню как левой, так и правой кнопкой мыши (мой выбор клиента ...),Возможно ли это?

Для отображения контекстного меню при щелчке правой кнопкой мыши я использую функцию loadComplete следующим образом:

loadComplete: function () {
        $("tr.jqgrow", this).contextMenu('contextMenu', {
                bindings: {...},
                onContextMenu: function (event) {...}
            });
        },

, и она работает нормально.

Для отображенияконтекстное меню при щелчке левой кнопкой мыши Я попробовал функцию beforeSelectRow:

beforeSelectRow: function (rowid, e){
        $("tr.jqgrow", this).contextMenu('contextMenu', {
                bindings: {...},
                onContextMenu: function (event) {...}
            });
        },

, но она не работает!

Кто-нибудь знает, как я могу показать контекстное меню при щелчке левой кнопкой мыши настрока (или, может быть, выбор строки, это то же самое)?

Заранее спасибо,

Джефф

Ответы [ 3 ]

1 голос
/ 25 января 2012

Я предлагаю вам просто привязать событие click к тому же обработчику событий, определенному в jquery.contextmenu.js. Для этого вы можете использовать следующий код

var cmenu = $grid.data('events').contextmenu;
if (cmenu && cmenu.length > 0) {
    $grid.click(cmenu[0].handler);
}

Я использую фиксированную версию jquery.contextmenu.js, которая теперь является частью jqGrid (см. Мои предложения здесь ). Поэтому я связал contextMenu не с каждой строкой сетки, а непосредственно с элементом сетки.

Демонстрация показывает, что вышеуказанный подход работает. Если вы используете дополнительные привязки к событию contextmenu, вы можете улучшить код выше, чтобы выбрать правильный обработчик события cmenu[i].handler.

0 голосов
/ 09 октября 2015

Ничто из вышеперечисленного не работает на моей версии сетки, если работает тогда плохо.

Лучшее, что сработало, это просто отредактируйте \ trirand \ plugins \ jquery.contextmenu.js файл,


искать этот ряд

$(this).bind('contextmenu', function (e)

и измените или добавьте к тому, что вы предпочитаете, например, для левого клика do:

$(this).bind('click', function (e)

для двойного клика сделать

$(this).bind('dblclick', function (e)

Это сработало как шарм: -)

0 голосов
/ 24 января 2012

Попробуйте этот код, который в основном вызывает щелчок правой кнопкой мыши.

    beforeSelectRow: function (rowid, e){
       console.log(this);
       console.log(rowid);
       $("tr.jqgrow", this).trigger({
           type: 'mousedown',
           which: 3
       });
    }
...