【发布时间】:2017-08-24 12:30:10
【问题描述】:
在我的 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外部的变量)
【问题讨论】:
-
请描述使用的 jqGrid 版本 - Guriddo jqGrid、free-jqGrid 还是 jqGrid 版本
-
请在每个关于 jqGrid 的问题的文本中包含您使用(可以使用)的 jqGrid version 以及 fork (@ 987654321@、商业版 Guriddo jqGrid JS 或版本 beforeSelectRow 代码使用
return true;而不是return selectRow;(selectRow可能是局部变量)。此外,我认为没有任何理由将您的代码分成 3 个回调。您可以将所有代码放在beforeSelectRow中。 -
@Tony 我在我的 ASP.NET MVC 应用程序中使用 jQuery.jqGrid (by Trirand) nuget 包。 (nuget.org/packages/jQuery.jqGrid/4.4.4)
-
@Oleg 我在我的 ASP.NET MVC 应用程序中使用 jQuery.jqGrid(由 Trirand 提供)nuget 包。 (nuget.org/packages/jQuery.jqGrid/4.4.4)
-
@NoahSunil:jqGrid 4.4.4 是复古版本,发布时间为 4.5 年前,已经死了很多年。目前有两个主要的分支:free jqGrid,我开发,也可以作为NuGet package 使用,以及商业Guriddo jqGrid JS,开发 Tony Tomov。我建议您从产品升级到最新版本。