Поведение мультивыборки jqGrid при нажатии специальной клавиши - PullRequest
5 голосов
/ 15 сентября 2010

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

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

Ответы [ 2 ]

5 голосов
/ 15 сентября 2010

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 голосов
/ 27 июня 2017

Я только что натолкнулся на тот же вопрос, желая каким-то образом имитировать такое поведение: - Выберите один раз при щелчке строки jqGrid - Многократный выбор при щелчке строки мышью (например, CTRL + щелчок)

Мое решение использует событие "beforeSelectRow" jqGrid, которое передает событие 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
    }
}

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

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

...