我想通过点击多次选择和取消选择一行。
我的代码到目前为止:(lastSelected
是全局var
):
beforeSelectRow: function (id)
{
if (lastSelected !== id)
{
grid.setSelection(id);
lastSelected = id;
return;
}
else
{
grid.resetSelection(id);
lastSelected = null;
}
}
代码工作正常,但只有在第一次单击后才会突出显示行。第二次点击不会突出显示它,当我下次点击它时它会保持不变亮,但是在第3次,第5次...点击之后它的行为就像选中(我选择了行时会弹出模态),但不会突出显示。
没有grid.getSelection(id)
它根本不会突出显示,但仍然像选择和取消选择一样工作。
答案 0 :(得分:0)
在我看来,代码中的主要错误是beforeSelectRow
的返回值。如果返回的值不是false
,那么标准处理将继续,并且您之前通过使用setSelection
明确选择的行可以取消选择。
要解决此问题,您应该从false
返回beforeSelectRow
。另外,我建议使用$(this)
代替grid
变量,并使用jqGrid的标准selrow
参数代替使用lastSelected
变量。生成的代码可以是以下
beforeSelectRow: function (rowid, e) {
var $self = $(this), selectedRowid = $self.jqGrid("getGridParam", "selrow");
if (selectedRowid === rowid) {
$self.jqGrid("resetSelection");
} else {
$self.jqGrid("setSelection", rowid, true, e);
}
return false; // don't process the standard selection
}
相应的演示是here。