问题
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:
- If you define only
multiselect:true
: http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect2.htm. This is standard behavior which you not like. - 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. - 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