Событие редактирования in-jqrid при отмене "Esc" - PullRequest
1 голос
/ 27 апреля 2010

Кто-нибудь знает, если встроенное редактирование jqGrid генерирует события, которые могут быть обработаны? Следующий код является простым примером того, что я пытаюсь выполнить:

jQuery('#list').jqGrid('editRow', 0, true, false, false, false, {onClose: function(){alert('onClose')}}, reloadGrid);

Я бы хотел иметь возможность обработать событие отмены "Esc". Событие onClose доступно при редактировании формы:

См. Соответствующий раздел в документации jqGrid .

, но не работает со встроенным редактированием, а документация по встроенному редактированию не предоставляет ничего особенного, кроме опции extraparam, которая очень неопределенная:

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing

Я не смог понять, как использовать опции extraparam. Предложения?

Ответы [ 2 ]

2 голосов
/ 27 апреля 2010

По вашей ссылке:

extraparam: массив типа имя: значение. При установке эти значения публикуются вместе с другими значениями на сервере.

Так что это только позволит вам передавать пользовательские данные обратно на сервер через POST. Это не позволит вам добавить обработчик событий.

Исходный код jqGrid для editRow содержит следующий обработчик для клавиши Escape:

if (e.keyCode === 27) {$($t).jqGrid("restoreRow",rowid, afterrestorefunc);}

Итак, событие поднято. По документам:

afterrestorefunc, если определено, эта функция вызывается после восстановления строки. В эту функцию мы передаем rowid

Так что нет явного обратного вызова функции для клавиши escape, хотя нажатие клавиши escape вызовет afterrestorefunc. К сожалению, это событие также вызывается, когда строка сохраняется с помощью клавиши Enter:

if (e.keyCode === 13) {
    var ta = e.target;
    if(ta.tagName == 'TEXTAREA') return true;
    $($t).jqGrid("saveRow",rowid,succesfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc );
    return false;
}

Но если вы будете осторожны, вы можете использовать afterrestorefunc для удовлетворения своих потребностей.

0 голосов
/ 27 апреля 2010

Привет, Джастин, спасибо за быстрый ответ и помощь.

Хотя обратный вызов afterrestorefunc обещает мой запрос, это все еще не совсем то, что я сейчас ищу. Насколько я понимаю, единственная причина, по которой это было бы полезно, - это если я вызывал метод restoreRow. Но проблема, с которой я сталкиваюсь, заключается в том, что editRow закрывается клавишей «Esc», и мне нужно иметь возможность обработать событие. Однако ваш ответ заставил меня задуматься о editRow обратных вызовах, и там также есть определение afterrestorefunc обратного вызова:

jQuery("#grid_id").jqGrid('editRow',rowid, keys, oneditfunc, succesfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc);

Это именно то, что мне нужно, и, кажется, работает отлично. Хотя ваш ответ не соответствовал моему вопросу на 100%, он определенно указал мне верное направление. Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...