开发者

jqGrid multiselect behavior when pressing special key

开发者 https://www.devze.com 2023-01-16 19:09 出处:网络
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 andclick on another with no other key pressed, th

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 on开发者_运维问答e 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?


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.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消