繁体   English   中英

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

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

我有一个带有multiselect: true的网格设置multiselect: true因为我需要能够同时删除多个行。 onSelectRow事件上,我正在基于ID加载一些数据并将其显示给最终用户。 到现在为止还挺好。

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

在此处输入图片说明

现在看下面的例子:

在此处输入图片说明

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

我想做的是重置先前选择的行,然后仅突出显示我单击的最后一行。

例如,使用相同的图像:

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

但是,仅当我单击复选框以外的任何其他位置时,才应该发生这种情况。

在此处输入图片说明

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

我尝试了以下方法:

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

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

但由于行为不一致,因此无法正常工作。 您可以在此处查看演示。

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

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

multiboxonly: true

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM