Javascript 只有在jQgrid中未单击复选框时,才清除以前的选择?

Javascript 只有在jQgrid中未单击复选框时,才清除以前的选择?,javascript,jquery,jqgrid,free-jqgrid,Javascript,Jquery,Jqgrid,Free Jqgrid,我有一个multiselect:true的网格设置,因为我需要能够同时删除多行。在OnSetrow事件中,我根据ID加载一些数据并将其显示给最终用户。到目前为止还不错 这是一个一切正常的示例,显示ID=219109的数据: 现在看下面的例子: 在上面的示例中,第一行仍然高亮显示,然后我单击了第二行。由于启用了multiselect,我可以同时选择这两个选项。OnSetrow事件仍然正常工作,这意味着正在加载ID=282006的数据,但从视觉上看,最终用户可能会感到困惑 我要做的是重置以前选择的行

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

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

现在看下面的例子:

在上面的示例中,第一行仍然高亮显示,然后我单击了第二行。由于启用了multiselect,我可以同时选择这两个选项。OnSetrow事件仍然正常工作,这意味着正在加载ID=282006的数据,但从视觉上看,最终用户可能会感到困惑

我要做的是重置以前选择的行,并突出显示我单击的最后一行

例如,使用相同的图像:

加载未选择行的新网格 单击ID=219109:高亮显示并选择此行 单击ID=282006:清除网格并高亮显示此行 但是,只有在我单击复选框以外的任何其他位置时,才会发生这种情况

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

我尝试了以下方法:

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

    $(this).jqGrid("resetSelection");
    $(this).jqGrid("setSelection", rowid);
}
但它不起作用,因为行为不一致。您可以查看演示


如何实现这一点,你有什么想法吗?

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

multiboxonly: true

并删除当前的OnSetrow代码。看见如果用户多次单击复选框,则将选中行。单击行的另一部分将取消选择所有以前选择的行,并仅选择已单击的行。

在我看来,您只需添加multiboxonly:true选项并删除当前的OnSetRow代码即可。看见如果用户多次单击复选框,则将选中行。单击行的另一部分将取消选择所有以前选定的行,并仅选择已单击的行。这就是你想要实现的吗?@Oleg Yessss你是最棒的,非常感谢。顺便说一句,关于jQgrid,我这里还有更多的问题,如果您还有几分钟的时间,请快速查看