我对多选行为的期望是,只要没有按下特殊键,就会表现得正常。我的意思是,如果您选择了一行并单击另一行而没有按下其他键,则应选择新行并取消选择旧行。那么,jqGrid的标准选项允许您在常规行为之间进行选择,或者总是多选。只有在按下特殊键时才能进行多重选择。
有没有办法实现这个目标?
答案 0 :(得分:5)
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
以接收您喜欢的行为。
如果我误解了你的问题并且你修改了其他的东西,请在上述例子的基础上用其他词语来描述。
答案 1 :(得分:0)
我刚刚遇到了同样的问题,希望以某种方式模仿这样的行为: - 单击jqGrid行时单击 - 按键单击一行时的多选(如CTRL +单击)
我的解决方案使用jqGrid的“beforeSelectRow”事件,将click事件传递给它的处理程序。处理程序区分普通和“键控”点击。通过键控点击,普通点击首先消除先前的选择,而不是允许事件通过。
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选项。当然,Multiselect选项必须设置为true。