仅当未在 jQgrid 中单击复选框时才清除先前的选择?

Clear previous selection only if checkbox is not clicked in jQgrid?

我有一个 multiselect: true 的网格设置,因为我需要能够同时删除多行。在 onSelectRow 事件中,我加载了一些基于 ID 的数据并将其显示给最终用户。到目前为止一切顺利。

这是一切正常的示例,正​​在显示 ID=219109 的数据:

现在看下面的例子:

在上面的示例中,第一行仍然突出显示,然后我单击了第二行。由于 multiselect 启用,我能够同时 select 两者。 onSelectRow 事件仍在正常工作,这意味着正在为 ID=282006 加载数据,但在视觉上它可能会让最终用户感到困惑。

我想要做的是重置之前的 selected 行并只突出显示我单击的最后一行。

例如使用相同的图像:

然而,只有当我点击复选框以外的任何其他地方时才会发生这种情况。

在上图中,如果我单击任何列而不是第一列(带有复选框的列),我应该能够清除网格 selection 并选择最后一列,但如果我单击在复选框上没关系,因为这是一次删除多个的唯一方法。

我试过以下方法:

onSelectRow: function () {
    var rowid = $(this).jqGrid('getGridParam', 'selrow');

    $(this).jqGrid("resetSelection");
    $(this).jqGrid("setSelection", rowid);
}

但它不起作用,因为行为不一致。您可以查看演示 here.

有什么实现方法吗?

在我看来,您只需添加选项

multiboxonly: true

并删除您当前的 onSelectRow 代码。参见 https://jsfiddle.net/OlegKi/949pLpfv/3/。如果用户多次点击复选框,行将被 selected。单击该行的另一部分将取消select 所有先前 select 编辑的行,并且 select 仅取消单击的行。