jqGrid multiselect behavior when pressing special key

非 Y 不嫁゛ 提交于 2019-12-17 09:53:38

问题


What I was expecting from a multiselect behaviour is to behave just as normal as long as no special key is pressed. I mean, if you have a row selected and click on another with no other key pressed, then it should select the new one and deselect the old row. Well, jqGrid’s standard options lets you choose between always regular behaviour, or always multiselect. You can’t have multiselect only when a special key is pressed.

Is there a way I can achieve this?


回答1:


jqGrid has several selection strategy, all using multiselect:true. To demonstrate there I created three example:

  1. If you define only multiselect:true: http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect2.htm. This is standard behavior which you not like.
  2. If you define additionally multiboxonly:true: http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect3.htm. It seems to me that this behavior is what you need.
  3. If you define additionally multikey:"ctrlKey": http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect4.htm. In the case the row will be selected or deselected only if Ctrl are pressed.

If I understand your question correctly you should define both multiselect:true and multiboxonly:true to receive the behavior which you like.

If I misunderstood your question and you meaned something other please describe this in other words based on on of the above examples.




回答2:


I just came across the same question wanting to somehow mimic a behaviour like this: - Single-select on clicking a jqGrid's row - Multi-select when key-clicking a row (like CTRL + click)

My solution uses jqGrid's "beforeSelectRow" event whoch passes the click event to it's handler. The handler differentiates between plain and "keyed" click. A keyed click is pass through, a plain click first eliminates a previous selection, than allows the event to bubble through.

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
    }
}

Of course you may want to shorten this is a bit, but that way it seemed to be more clear, I think.

You don't need neither multikey nor multiboxonly option for this. Multiselect option has to be set to true, of course.



来源:https://stackoverflow.com/questions/3717969/jqgrid-multiselect-behavior-when-pressing-special-key

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!