仅在jQgrid中未单击复选框时清除上一个选择?

时间:2018-01-18 18:06:59

标签: javascript jquery jqgrid free-jqgrid

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

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

enter image description here

现在看下面的例子:

enter image description here

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

我想要做的是重置之前选择的行,然后突出显示我点击的最后一行。

例如使用相同的图像:

  • 加载未选择行的新网格
  • 点击ID=219109:突出显示并选择此行
  • 点击ID=282006:清除网格并突出显示此行

但是,只有当我点击复选框以外的任何其他位置时,才会发生这种情况。

enter image description here

在上面的图片中,如果我点击任何列而不是第一个列(具有复选框的那个),我应该能够清除网格选择并选择最后一个,但如果我点击复选框则无关紧要因为这是当时删除多个的唯一方法。

我尝试了以下内容:

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

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

但由于行为不一致,因此无效。您可以查看演示here

有关如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:1)

在我看来,你只需要添加选项

multiboxonly: true

并删除您当前的onSelectRow代码。见https://jsfiddle.net/OlegKi/949pLpfv/3/。如果用户在复选框上多次单击,则将选择行。单击该行的另一部分将取消选择所有先前选定的行,并仅选择单击的行。