【问题标题】:jqGrid - determine name of column on right click of a cell in jqGridjqGrid - 在 jqGrid 中右键单击单元格时确定列的名称
【发布时间】:2017-07-26 08:05:29
【问题描述】:

所以我必须在打开右键单击表中任何单元格时打开的上下文菜单时获取列名。我找到了这个答案jqGrid - determine name of column on right click of a column in jqGrid,它仅适用于列标题。

到目前为止我的代码

loadComplete: function () {
                    $('tr.jqgrow').contextMenu('myMenu2', {
                        bindings: {
                            CA: function(trigger) {
                                var cm = $('#' + MY_GRID ).jqGrid("getGridParam", "colModel");
                                //CODE SHOULD BE ADDED HERE -- to get the column name and pass to addToContext();
                                var rowData = jQuery('#' + MY_GRID ).jqGrid ('getRowData', trigger.id);
                                addToContext(rowData);
                            }
                        }
                    });
                },

也试过这段代码,但我得到未定义

var cellName = $(trigger).closest('td').attr('aria-described-by');

【问题讨论】:

  • 您使用哪个版本的contextMenu?您使用的 jqGrid 版本以及 jqGrid 的哪个分支(free jqGrid、商业版jqGrid JS 或版本 contextMenu 绑定到jqGrid 的每一行 单独,并在每次填充网格时执行此操作。将contextMenu once 绑定到网格就足够了。此外,您可以使用contextMenuonContextMenu 回调。选项 event (event.target) 的 target 属性为您提供所需的完整信息。
  • 您可以使用var iCol = $(event.target).closest("tr.jqgrow>td")[0].cellIndex; 获取列的索引,cm[iCol].name 是列名。
  • @Oleg 我使用旧的 jqGrid 和 jquery.contextmenu.r2.packed.js 我会检查你的解决方案谢谢你的回答
  • @Oleg 谢谢它的工作
  • 不客气!

标签: jquery jqgrid


【解决方案1】:

您可以使用 onContextMenu 来确定列名称,使用 aria- describeby 属性,如下所示

    ....contextMenu('contextMenu', {
        bindings: {
            'edit': function (t,c) {
                console.log(colname)
                editRow();
            },
            'add': function (t) {
                addRow();
            },
            'del': function (t) {
                delRow();
            }
        },
        onContextMenu: function (event) {
            colname = $(event.target).attr('aria-describedby');
            colname = colname.substr(gridId.length + 1);
            return true;
        }
    });

colname 是全局定义的,gridId 是没有#的网格的id

附:如果单元格内容复杂,正确的是替换

$(event.target).attr('aria-describedby');

$(event.target).closest('td').attr('aria-describedby');

【讨论】:

  • 您是否在全局范围内定义了 colname?你应该使用aria-describedby而不是aria-described-by,因为你在问题中发帖,这是不正确的
  • 啊抱歉,你的答案也有效,gridId 未定义,我应该用 MY_GRID 更改它
  • @MasterYi 谢谢。很高兴为您提供帮助。
  • 还有 $(event.target).closest('td').attr('aria- describeby');应该用于获取正确的列名,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多