JQGrid onselectrow events - пользовательский мультиселект - PullRequest
1 голос
/ 07 сентября 2010

Я много работал с JQGrid и рекомендую его всем. Одна особенность, которая мне не очень нравится, это встроенный мультиселект, который не использует специальные клавиши, такие как shift и ctrl, не дает вам много контроля и заставляет показывать флажки.

Я хотел бы реализовать свой собственный множественный выбор следующим образом: В onSelectRow - проверьте, удерживается ли shift или ctrl, добавьте идентификатор строки в массив и выберите его в сетке. если ничего не удерживается, очистите массив, добавьте новый идентификатор строки и выберите его в сетке.

Это достаточно просто реализовать, за исключением мне нужно событие в onSelectRow , чтобы проверить, удерживаются ли клавиши. Я бы предпочел не прикреплять события keydown и keyup к самому основному документу.

onSelectRow: function (id) {
            event=???
            if (!event.shiftKey && !event.ctrlKey) {

            }
            else {

            }
}

С уважением, Байрон Кобб.

РЕДАКТИРОВАТЬ: Решение -

После ввода Olegs я сделал следующее.

  1. Установить multiselect: true в определении сетки
  2. Скрыл столбец флажка в gridComplete, установив $("#myGrid").jqGrid('hideCol', 'cb');
  3. Сам проверял наличие клавиши ctrl (не используя multikey: "ctrlKey") перед выбором и отменой выбора, если клавиша ctrl не нажата.
  4. Позже, используя массив выбора при необходимости - var SelectedRows = $("#myGrid").jqGrid('getGridParam', 'selarrrow');

beforeSelectRow: function (rowid, e) {
            if (!e.ctrlKey) {
                $("#myGrid").resetSelection();
            }
            return true;
        },

1 Ответ

2 голосов
/ 07 сентября 2010

Начиная с версии 3.5.3 jqGrid поддерживает beforeSelectRow событие, которое содержит событие, которое вам нужно и которое будет вызвано до onSelectRow.

Возможно использование multikey опции jqGrid и скрытие псевдостолбца с именем "cb"

$("#mygrid").jqGrid('hideCol','cb');

(cb - поля со списком, см. http://www.trirand.com/blog/?page_id=393/help/multiselect-without-checkboxes-1/) поможет вам реализовать в jqGrid поведение выбора строки, которое вы хотите.

ОБНОВЛЕНО : Полагаю, вы также знаете, что $("#mygrid").jqGrid('getGridParam','selarrrow') можно использовать для получения массива идентификаторов всех выбранных в данный момент строк, но для уверенности я также вставлю информацию.

...