gpt4 book ai didi

jquery - jqGrid:使用 beforeSelectRow 它禁用我的 onCellSelect 事件

转载 作者:行者123 更新时间:2023-12-01 06:35:56 30 4
gpt4 key购买 nike

我在这里找到了问题的解决方案: jqGrid multiselect - limit the selection of the row only using the checkbox

但这会取消我的 onCellSelect 事件。简而言之,我需要仅当用户单击复选框列时才能选择行。上面链接中的解决方案显示了如何执行此操作,但我需要能够对网格中的特定单元格执行操作,例如,当我单击第 10 列时,下面的代码会打开一个弹出窗口:

  onCellSelect: function (rowid, iCol, cellcontent, e) {
if (iCol == 10) {
OpenPopupWindow(rowid);
}
},

有什么想法吗?谢谢!

最佳答案

您应该明白 beforeSelectRowonCellSelectclick 内进行处理在网格体上设置的事件处理程序(参见jqGrid的the part source code)。而且回调onCellSelect仅当beforeSelectRow时才会被处理仅当通过单击选择该行时才返回 true(请参阅代码的 the lines)。

作为解决方法,您可以做的就是移动当前的代码 onCellSelect beforeSelectRow内部 :

beforeSelectRow: function (rowid, e) {
var $self = $(this),
iCol = $.jgrid.getCellIndex($(e.target).closest("td")[0]),
cm = $self.jqGrid("getGridParam", "colModel");
if (cm[iCol].name === "cb") {
return true;
}

if (iCol === 10) {
OpenPopupWindow(rowid);
}

return false;
}

只是一些小的常见附加说明。我建议您将对列号的测试更改为对列名称的测试:cm[iCol].name === 'myColumnName'而不是iCol === 10 。这将使代码更易于维护。另外我建议您更改函数名称 OpenPopupWindowopenPopupWindow 。 JavaScript 的命名转换要求仅在构造函数中使用第一个大写的函数名称。如果您选择函数名称为 OpenPopupWindow然后你给出使用 new 的提示运营商:var test = new OpenPopupWindow(rowid); 。你看连OpenPopupWindow的颜色都一样stackoverflow 上的另一个颜色是 $.jgrid.getCellIndex 。您当前的选择看起来与以下语句相同:

var theVariableHoldOnlyIntegerValues = true; // assign boolean

重命名函数OpenPopupWindowopenPopupWindow按顺序排列颜色。

关于jquery - jqGrid:使用 beforeSelectRow 它禁用我的 onCellSelect 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241155/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com