2010-09-15 13 views
5

Was ich von einem Multiselect-Verhalten erwartet habe, ist, sich so normal zu verhalten, solange keine spezielle Taste gedrückt wird. Ich meine, wenn Sie eine Zeile ausgewählt haben und auf eine andere klicken, ohne dass eine andere Taste gedrückt wird, dann sollte sie die neue auswählen und die alte Zeile abwählen. Nun, mit den Standardoptionen von jqGrid können Sie zwischen immer gleichbleibendem Verhalten oder immer Multiselektion wählen. Sie können die Mehrfachauswahl nur dann nicht durchführen, wenn eine spezielle Taste gedrückt wird.jqGrid Multiselect-Verhalten beim Drücken der Sondertaste

Gibt es eine Möglichkeit, dies zu erreichen?

Antwort

5

jqGrid hat mehrere Auswahlstrategie, alle mit multiselect:true. Um zu demonstrieren, da habe ich drei Beispiel:

  1. Wenn Sie definieren nur multiselect:true: http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect2.htm. Dies ist ein Standardverhalten, das Ihnen nicht gefällt. Wenn Sie zusätzlich multiboxonly:true definieren: http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect3.htm. Es scheint mir, dass dieses Verhalten das ist, was Sie brauchen. Wenn Sie zusätzlich multikey:"ctrlKey" definieren: http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect4.htm. In diesem Fall wird die Zeile nur ausgewählt oder abgewählt, wenn Ctrl gedrückt wird.

Wenn ich Ihre Frage richtig verstanden sollten Sie definieren beide multiselect:true und multiboxonly:true das Verhalten zu erhalten, die Sie mögen.

Wenn ich Ihre Frage missverstanden habe und Sie etwas anderes verstanden haben, beschreiben Sie das bitte mit anderen Worten basierend auf einem der obigen Beispiele.

+0

danke! @Oleg ... multiboxonly: true bedeutet, dass ich die Checkbox nicht ausblenden kann ..wenn ich meine Multiselect-Checkbox mit ('hidecol', 'cb') verberge .. kann das beim Ausblenden der Checkbox möglich sein? – paul

+0

Ich bin in der Lage zu erreichen mit beforeSelectRow wie vorSelectRow: function (rowid, e) { if (! E.ctrlKey) { $ ("# list10"). ResetSelection(); } Rückkehr wahr; } und einfach multiselect einstellen: true ..... lass es mich wissen, wenn ich etwas falsch mache – paul

0

Ich kam gerade über die gleiche Frage will irgendwie ein Verhalten wie diese nachahmen: - Single-select auf einen jqGrid der Zeile klicken - Multi-wählen, wenn eine Reihe Schlüssel klicken (wie Strg + Klick)

Meine Lösung verwendet das "beforeSelectRow" -Ereignis von jqGrid, das das click -Ereignis an den Handler übergibt. Der Handler unterscheidet zwischen einem einfachen und einem "geklickten" Klick. Ein gedrückter Klick wird übergeben, ein einfacher Klick beseitigt zuerst eine vorherige Auswahl und lässt das Ereignis durch.

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

Natürlich möchten Sie vielleicht verkürzen das ist ein bisschen, aber so schien es klarer zu sein, denke ich.

Sie brauchen dafür weder die mikey- noch die multibox-Option. Die Multiselect-Option muss natürlich auf "True" gesetzt sein.

Verwandte Themen