4

我想要在 jqGrid 中右键单击列标题时的列名称。任何代码将不胜感激。

4

2 回答 2

3

您可以将contextmenu事件绑定到所有列标题。每个标题都是<th>元素,因此它的 DOM 支持cellIndex属性。cellIndex属性为您提供列标题的索引。如果您将使用相同的索引,colModel您将获得该列的定义。该name属性为您提供列名。

相应的代码可能如下:

var cm = $grid.jqGrid("getGridParam", "colModel");
$("th.ui-th-column", $grid[0].grid.hDiv).bind('contextmenu', function(e) {
    var $th = $(e.currentTarget).closest("th");
    if ($th.length > 0) {
        alert("the header of the column '" + cm[$th[0].cellIndex].name +
            "' was clicked");
        e.preventDefault(); // don't display standard context menu
    }
});

演示使用代码。只需使用鼠标右键单击列标题,您将看到结果:

在此处输入图像描述

于 2012-07-02T17:32:01.700 回答
2

所有 jqGrid 单元格都有一个aria-described-bygridId_columnname. 您可以使用它来获取您的列名。

对于网格单元..

var cellName = $(e.target).closest('td').attr('aria-described-by');
var gridId = 'list1';

var columnName = cellName.substr(gridId.length - 1);

对于列标题,除了奥列格的回答,你可以这样做..

var header = $(e.target).closest('th')
var gridId = 'list1';

var columnName = header.attr('id').substr(gridId.length - 1);
于 2012-07-02T17:53:45.183 回答