仅当未在 jQgrid 中单击复选框时才清除先前的选择?
Clear previous selection only if checkbox is not clicked in jQgrid?
我有一个 multiselect: true
的网格设置,因为我需要能够同时删除多行。在 onSelectRow
事件中,我加载了一些基于 ID
的数据并将其显示给最终用户。到目前为止一切顺利。
这是一切正常的示例,正在显示 ID=219109
的数据:
现在看下面的例子:
在上面的示例中,第一行仍然突出显示,然后我单击了第二行。由于 multiselect
启用,我能够同时 select 两者。 onSelectRow
事件仍在正常工作,这意味着正在为 ID=282006
加载数据,但在视觉上它可能会让最终用户感到困惑。
我想要做的是重置之前的 selected 行并只突出显示我单击的最后一行。
例如使用相同的图像:
- 加载一个没有行的新网格 selected
- 单击
ID=219109
:突出显示并 select 这一行
- 单击
ID=282006
:清除网格并突出显示此行
然而,只有当我点击复选框以外的任何其他地方时才会发生这种情况。
在上图中,如果我单击任何列而不是第一列(带有复选框的列),我应该能够清除网格 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 仅取消单击的行。
我有一个 multiselect: true
的网格设置,因为我需要能够同时删除多行。在 onSelectRow
事件中,我加载了一些基于 ID
的数据并将其显示给最终用户。到目前为止一切顺利。
这是一切正常的示例,正在显示 ID=219109
的数据:
现在看下面的例子:
在上面的示例中,第一行仍然突出显示,然后我单击了第二行。由于 multiselect
启用,我能够同时 select 两者。 onSelectRow
事件仍在正常工作,这意味着正在为 ID=282006
加载数据,但在视觉上它可能会让最终用户感到困惑。
我想要做的是重置之前的 selected 行并只突出显示我单击的最后一行。
例如使用相同的图像:
- 加载一个没有行的新网格 selected
- 单击
ID=219109
:突出显示并 select 这一行 - 单击
ID=282006
:清除网格并突出显示此行
然而,只有当我点击复选框以外的任何其他地方时才会发生这种情况。
在上图中,如果我单击任何列而不是第一列(带有复选框的列),我应该能够清除网格 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 仅取消单击的行。