我对多选行为的期望是只要没有按下特殊键就可以正常运行。我的意思是,如果您选择了一行并在没有按下其他键的情况下单击另一行,那么它应该选择新行并取消选择旧行。嗯,jqGrid 的标准选项让您在始终常规行为或始终多选之间进行选择。只有在按下特殊键时才能进行多选。
有没有办法可以做到这一点?
我对多选行为的期望是只要没有按下特殊键就可以正常运行。我的意思是,如果您选择了一行并在没有按下其他键的情况下单击另一行,那么它应该选择新行并取消选择旧行。嗯,jqGrid 的标准选项让您在始终常规行为或始终多选之间进行选择。只有在按下特殊键时才能进行多选。
有没有办法可以做到这一点?
jqGrid 有几种选择策略,都使用multiselect:true. 为了演示,我创建了三个示例:
multiselect:true:http ://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect2.htm 。这是您不喜欢的标准行为。multiboxonly:true:http ://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect3.htm 。在我看来,这种行为是你所需要的。multikey:"ctrlKey":http ://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect4.htm 。Ctrl在这种情况下,只有按下时才会选择或取消选择该行。如果我正确理解您的问题,您应该定义两者multiselect:true并multiboxonly:true接收您喜欢的行为。
如果我误解了您的问题并且您的意思是其他意思,请根据上述示例换句话讲。
我刚刚遇到了同样的问题,想以某种方式模仿这样的行为: - 单击 jqGrid 的行时单选 - 键单击行时的多选(如 CTRL + 单击)
我的解决方案使用 jqGrid 的“beforeSelectRow”事件,该事件将点击事件传递给它的处理程序。处理程序区分普通点击和“键控”点击。按键点击通过,普通点击首先消除先前的选择,然后允许事件冒泡。
function(rowid,e) {
if (e.ctrlKey==true) {
return true;//CTRL clicked-->multi select
} else {
$('#CoolGrid').jqGrid('resetSelection');//Reset existing select
return true;//Pass through new item selection
}
}
当然,您可能想缩短一点,但我认为这样似乎更清楚。
您既不需要 multikey 也不需要 multiboxonly 选项。当然,多选选项必须设置为 true。