【问题标题】:JqGrid PHP: how to implement a righ-click context-menu?JqG​​rid PHP:如何实现右键单击上下文菜单?
【发布时间】:2014-02-27 05:32:59
【问题描述】:

如何在 JqGrid for PHP 中实现右键单击 context-menu

我正在通过Oleg 尝试this solution,但它不起作用。 我想得到这个:


grid.php sn-p:

$rightclick = <<<RIGHTCLICK
    function () {
    $("tr.jqgrow", this).contextMenu('myMenu1', {
        bindings: {
            'edit': function (trigger) {
                // trigger is the DOM element ("tr.jqgrow") which are triggered
                grid.editGridRow(trigger.id, editSettings);
            },
            'add': function ( /*trigger*/ ) {
                grid.editGridRow("new", addSettings);
            },
            'del': function (trigger) {
                if ($('#del').hasClass('ui-state-disabled') === false) {
                    // disabled item can do be choosed
                    grid.delGridRow(trigger.id, delSettings);
                }
            }
        },
        onContextMenu: function (event /*, menu*/ ) {
            var rowId = $(event.target).closest("tr.jqgrow").attr("id");
            //grid.setSelection(rowId);
            // disable menu for rows with even rowids
            $('#del').attr("disabled", Number(rowId) % 2 === 0);
            if (Number(rowId) % 2 === 0) {
                $('#del').attr("disabled", "disabled").addClass('ui-state-disabled');
            } else {
                $('#del').removeAttr("disabled").removeClass('ui-state-disabled');
            }
            return true;
        }
    });
}
RIGHTCLICK;

$grid->setGridEvent('loadComplete ', $rightclick);

有没有办法在 JqGrid for PHP 中获取上下文菜单?

【问题讨论】:

  • 你在setGridEvent设置的回调函数中使用this解决了your previous problem吗?可能你也有同样的问题?

标签: php jquery jqgrid contextmenu jqgrid-php


【解决方案1】:

首先,您的代码有多余的空间:'loadComplete ' 而不是 'loadComplete'

我可以再重复一次,我自己不使用 PHP,也不使用 JqGrid 的 setGridEvent 用于 PHP。所以我只能猜测$grid-&gt;setGridEvent 可能没有正确转发this。在这种情况下,您可以使用setGridParam 动态设置回调(参见the answer)或使用jqGridLoadComplete 事件而不是loadComplete 回调(参见the answer)。

【讨论】:

  • 谢谢@Oleg,我把它改成了loadComplete,没有空格。不过,我现在收到此错误:Uncaught TypeError: Object #&lt;HTMLTableElement&gt; has no method 'editGridRow'
  • 要修复上面的错误,我必须将 grid.editGridRow(trigger.id, editSettings); 更改为 jQuery('#grid').jqGrid('editGridRow', '" + trigger.id + "'); Altough 我现在得到一个空的编辑表单! (看起来代码没有获取行 ID!)
  • 好的,我最终设法让它工作了!我不得不将'" + trigger.id + "' 更改为trigger.id。因此正确的代码是:jQuery('#grid').jqGrid('editGridRow', trigger.id);
  • @JessStone:如果设置了选项$.jgrid.no_legacy_api = true;,则必须使用$("#grid").jqGrid("method", ...) 而不是$("#grid").method(...)。您发布的代码的其他部分似乎与我回答的主要问题相去甚远。这样的问题可能很容易调试,并且在阅读过程中发现错误要困难得多。无论如何,我很高兴读到您的代码现在似乎可以工作了。恭喜你!
猜你喜欢
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 2017-04-22
  • 1970-01-01
相关资源
最近更新 更多