jqGrid - 确定jqGrid中右键单击列的名称

时间:2012-07-02 09:37:03

标签: jqgrid

我希望右键单击jqGrid中列标题的列名称。任何代码都将不胜感激。

2 个答案:

答案 0 :(得分: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
    }
});

The demo使用代码。只需在列标题上单击鼠标右键,您将看到结果:

enter image description here

答案 1 :(得分:2)

所有jqGrid单元格都具有aria-described-by属性,该属性由gridId_columnname组成。您可以使用它来获取列名。

对于网格单元..

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

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

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

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

var columnName = header.attr('id').substr(gridId.length - 1);