【发布时间】:2011-07-20 01:48:36
【问题描述】:
在 Jqgrid 中,我想限制用户在任何时候只能选择一个复选框。当用户选择多个复选框时,仅最后一次选择处于“已选择”状态,其余应自动取消选择。
我已将多选属性设置为 true。但我无法取消选择以前选择的项目。如果可以怎么办?
谢谢
【问题讨论】:
在 Jqgrid 中,我想限制用户在任何时候只能选择一个复选框。当用户选择多个复选框时,仅最后一次选择处于“已选择”状态,其余应自动取消选择。
我已将多选属性设置为 true。但我无法取消选择以前选择的项目。如果可以怎么办?
谢谢
【问题讨论】:
您可以使用事件 beforeSelectRow 并重置选择:
beforeSelectRow: function(rowid, e)
{
jQuery("#list47").jqGrid('resetSelection');
return(true);
}
我有一个fiddle 给你,你可以看看它是如何工作的。
【讨论】:
你必须做更多的事情:
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;
}
【讨论】:
在每一列中都有一个复选框意味着您一次可以点击多个。您要求的基本上是 multiselect: false 行为,但带有复选框列 - 您确定在这种情况下您真的想要复选框吗?
【讨论】:
我知道这个问题很老,但我在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 设置
这正是我所需要的。它可能对其他人有所帮助。
【讨论】: