2010-09-15 4 views
5

То, что я ожидал от многосекундного поведения, - вести себя как обычно, пока не нажимается специальная клавиша. Я имею в виду, если у вас есть выбранная строка и нажмите на другую без нажатия другой клавиши, тогда она должна выбрать новую и снять выделение со старой строки. Ну, стандартные опции jqGrid позволяют выбирать между всегда регулярным поведением или всегда мультиселекцией. Вы не можете иметь мультиселекцию только при нажатии специальной клавиши.jQGrid многоселекторное поведение при нажатии специальной клавиши

Есть ли способ, которым я могу это достичь?

ответ

5

jqGrid имеет несколько стратегий выбора, используя multiselect:true. Для того, чтобы продемонстрировать там я создал три примера:

  1. Если вы определяете только multiselect:true: http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect2.htm. Это стандартное поведение, которое вам не нравится.
  2. Если вы определяете дополнительно multiboxonly:true: http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect3.htm. Мне кажется, что это то, что вам нужно.
  3. Если вы определяете дополнительно multikey:"ctrlKey": http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect4.htm. В случае, если строка будет выбрана или отменена, только если нажаты Ctrl.

Если вы правильно поняли ваш вопрос, вы должны определить как multiselect:true, так и multiboxonly:true, чтобы получить поведение, которое вам нравится.

Если я неправильно понял ваш вопрос, и вы имели в виду что-то другое, пожалуйста, опишите это другими словами, основываясь на приведенных выше примерах.

+0

спасибо! @Oleg ... multiboxonly: true означает, что я не могу скрыть флажок. Так как я скрываю свой флажок multiselect, используя ('hidecol', 'cb') .. возможно ли это, если скрыть флажок? – paul

+0

Я могу достичь использования beforeSelectRow, как beforeSelectRow: function (rowid, e) { if (! E.ctrlKey) { $ ("# list10"). ResetSelection(); } return true; } и просто настройка multiselect: true ..... дайте мне знать, если я что-то делаю неправильно – paul

0

Я просто наткнулся на тот же вопрос, желая хоть как-то имитировать поведение, как это: - Single-выбор щелкать ряд А jqGrid в - Multi-выбрать, когда ключ щелкнув строку (например, CTRL + щелчок)

Мое решение использует событие jqGrid «beforeSelectRow», которое whoch передает событие click своему обработчику. Обработчик различает простой и «нажатый» щелчок. Щелчок по ключу проходит, простой щелчок сначала исключает предыдущий выбор, чем позволяет событию пузыриться.

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

Конечно, вы можете сократить это немного, но, похоже, это было более ясно, я думаю.

Для этого вам не нужен ни мультики, ни многоугольник. Конечно, опция Multiselect должна быть установлена ​​в true.