Я много работал с JQGrid и рекомендую его всем.
Одна особенность, которая мне не очень нравится, это встроенный мультиселект, который не использует специальные клавиши, такие как shift и ctrl, не дает вам много контроля и заставляет показывать флажки.
Я хотел бы реализовать свой собственный множественный выбор следующим образом:
В onSelectRow - проверьте, удерживается ли shift или ctrl, добавьте идентификатор строки в массив и выберите его в сетке. если ничего не удерживается, очистите массив, добавьте новый идентификатор строки и выберите его в сетке.
Это достаточно просто реализовать, за исключением мне нужно событие в onSelectRow , чтобы проверить, удерживаются ли клавиши. Я бы предпочел не прикреплять события keydown и keyup к самому основному документу.
onSelectRow: function (id) {
event=???
if (!event.shiftKey && !event.ctrlKey) {
}
else {
}
}
С уважением,
Байрон Кобб.
РЕДАКТИРОВАТЬ: Решение -
После ввода Olegs я сделал следующее.
- Установить
multiselect: true
в определении сетки
- Скрыл столбец флажка в
gridComplete
, установив $("#myGrid").jqGrid('hideCol', 'cb');
- Сам проверял наличие клавиши ctrl (не используя multikey: "ctrlKey") перед выбором и отменой выбора, если клавиша ctrl не нажата.
- Позже, используя массив выбора при необходимости -
var SelectedRows = $("#myGrid").jqGrid('getGridParam', 'selarrrow');
beforeSelectRow: function (rowid, e) {
if (!e.ctrlKey) {
$("#myGrid").resetSelection();
}
return true;
},