防止jqGrid onSelectRow被调用特定的单元格 - jqGrid v4.4.4

时间:2017-08-24 12:30:11

标签: jquery jqgrid

在我的jqGrid中,我实施了onSelectRowonCellSelect个事件。 onCellSelect仅适用于一个特定的单元格。当我点击该单元格时,第一个onCellSelect事件会引发onSelectRow。但我只希望仅为该单元格触发onCellSelect事件。对于网格中的其他单元格来说很好。我解决这个问题的方法是调用beforeSelectRow事件。在我找到单元格的情况下,然后将我的javascript变量设置为false。然后在onSelectRow中检查此值是否为真,然后执行onSelectRow中的语句,否则忽略它们。

beforeSelectRow: function (rowid, e) {
                    var $self = $(this),
                    iCol = $.jgrid.getCellIndex($(e.target).closest("td")[0]),
                    cm = $self.jqGrid("getGridParam", "colModel");
                    if (cm[iCol].name === "Activate/Deactivate") {
                        selectRow = false;
                    }
                    else {
                        selectRow = true;
                    }
                    return true;
                },                                              
onCellSelect: function (rowid, iCol, cellcontent, e) {
                    var row = $(this).getRowData(rowid);
                    if (iCol == 7) {
                        //some code statements here
                        });
                    }
                }, 
onSelectRow: function (id) {
                    if (selectRow) {
                       //some code statements here
                    }
                },

还有其他更好的方法吗? (selectRow是jqGrid之外的变量)

1 个答案:

答案 0 :(得分:0)

基本上如果使用Guriddo jqGrid,则可以在onSelectRow中移动beforeSelectRow中的代码,因为此方法也具有事件参数。

有一种更为明智的方法可以删除所选单元格的名称。

试试这个

onCellSelect: function (rowid, iCol, cellcontent, e) {
....
}, 
onSelectRow: function (id, status, e) {
    var name = $(e.target).closest("td").attr('aria-describedby'); 
    name = name.split(this.p.id+"_");
    name = name[1];
    if (name === "Activate/Deactivate") {
       //some code statements here
    }
},