按下特殊键时的jqGrid多选行为

Posted

技术标签:

【中文标题】按下特殊键时的jqGrid多选行为【英文标题】:jqGrid multiselect behavior when pressing special key 【发布时间】:2011-04-12 16:34:10 【问题描述】:

我对多选行为的期望是只要没有按下特殊键就可以正常运行。我的意思是,如果您选择了一行并单击另一行而没有按下其他键,那么它应该选择新行并取消选择旧行。好吧,jqGrid 的标准选项让您在始终常规行为或始终多选之间进行选择。只有在按下特殊键时才能进行多选。

有什么方法可以实现吗?

【问题讨论】:

【参考方案1】:

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:truemultiboxonly:true 以接收您喜欢的行为。

如果我误解了您的问题,而您的意思是其他意思,请根据上述示例换一种说法。

【讨论】:

谢谢! @Oleg ...multiboxonly:true 表示我无法隐藏复选框..因为我正在使用 ('hidecol','cb') 隐藏我的多选复选框..隐藏复选框时可以吗? 我可以像 beforeSelectRow 一样使用 beforeSelectRow 来实现:function (rowid, e) if (!e.ctrlKey) $("#list10").resetSelection(); 返回真;并设置 multiselect:true .....如果我做错了什么请告诉我【参考方案2】:

我刚刚遇到了同样的问题,想以某种方式模仿这样的行为: - 单击 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。

【讨论】:

以上是关于按下特殊键时的jqGrid多选行为的主要内容,如果未能解决你的问题,请参考以下文章

JTable/setDefaultRenderer 多选行

JSON将多选行编码为数组[重复]

怎么在jqgrid中设置checkbox多选,怎么获取多选的值

怎么在jqgrid中设置checkbox多选,怎么获取多选的值

jqGrid 多选 - 仅使用复选框限制行的选择

怎么在jqgrid中设置checkbox多选,怎么获取多选的值