在Jqgrid中,我想限制用户随时只选择一个复选框。当用户选择仅最后选择为处于“已选择”状态的多个复选框时,应自动取消选中其余复选框。
我已将多选属性设置为true。但我无法取消选择之前选择的项目。有可能这样做吗?
由于
答案 0 :(得分:9)
您可以使用事件 beforeSelectRow 并重置选择:
beforeSelectRow: function(rowid, e)
{
jQuery("#list47").jqGrid('resetSelection');
return(true);
}
我有一个fiddle给你,所以你可以查看它是如何工作的。
答案 1 :(得分:3)
你必须做更多的事情:
1。将multiboxonly
设为true
,将multiselect
设为true
2。定义事件onSelectRow
和beforeSelectRow
:
3。定义全局变量:var lastSel
;
OnSelectRow
和beforeSelectRow
实施:
onSelectRow: function (rowId, status, e) {
if (rowId == lastSel) {
$(this).jqGrid("resetSelection");
lastSel = undefined;
status = false;
} else {
lastSel = rowId;
}
},
beforeSelectRow: function (rowId, e) {
$(this).jqGrid("resetSelection");
return true;
}
答案 2 :(得分:2)
每列中都有一个复选框意味着您可以一次单击多个复选框。您要求的基本上是multiselect: false
行为,但是使用复选框列 - 您确定在这种情况下确实需要复选框吗?
答案 3 :(得分:1)
我知道这个问题已经过时了,但我在Stack Post找到了一个更好的解决方案。
您所要做的就是设置jqGrid的以下两个属性:
multiselect:true // multi-select checkboxes appear
multiboxonly:true // checkboxes act like radio buttons where only one is selected at a time
我更新了LeftyX制作的小提琴,只需在此JsFiddle
使用multiboxonly设置这就是我所需要的。它可能会帮助别人。