按特殊键时jqGrid多选行为

时间:2010-09-15 13:20:34

标签: jqgrid keypress multi-select

我对多选行为的期望是,只要没有按下特殊键,就会表现得正常。我的意思是,如果您选择了一行并单击另一行而没有按下其他键,则应选择新行并取消选择旧行。那么,jqGrid的标准选项允许您在常规行为之间进行选择,或者总是多选。只有在按下特殊键时才能进行多重选择。

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:5)

jqGrid有几种选择策略,均使用multiselect:true。为了演示那里我创建了三个例子:

  1. 如果您只定义multiselect:truehttp://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect2.htm。这是你不喜欢的标准行为。
  2. 如果您另外定义multiboxonly:truehttp://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect3.htm。在我看来,这种行为就是你所需要的。
  3. 如果您另外定义multikey:"ctrlKey"http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect4.htm。如果仅在按下 Ctrl 时才会选择或取消选择行。
  4. 如果我正确理解您的问题,您应该同时定义multiselect:truemultiboxonly: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。