在我的jqGrid中,我实施了onSelectRow
和onCellSelect
个事件。 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之外的变量)
答案 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
}
},