Возврат значений из triggered-событий в jqGrid

Цикл статей «Документация jqGrid на русском».

Следующая статья — «Порядок возникновения событий в jqGrid».
Предыдущая статья — «Список triggered-событий в jqGrid».

Некоторые события в статье «Список triggered-событий в jqGrid» должны или могут возвращать значения. Нужно иметь в виду, что может быть зарегистрировано несколько обработчиков событий. Обработчик события должен использоваться свойство result у объекта event, чтобы узнать значение, возвращённое из обработчика события, выполнившегося перед ним. В зависимости от возвращённого значения нужно комбинировать результаты с результатами предыдущего обработчика.

Например, кто-нибудь пишет обработчик события jqGridBeforeSelectRow, который возвращает логическое значение true/false или строку "stop".  Событие будет вызываться внутри таблицы. Таблица jqGrid вызывает событие jqGridBeforeSelectRow перед выделением кликнутой строки. Если возвращается значение false или "stop", то jqGrid не выделяет строку.  Это очевидно, что событие jqGridBeforeSelectRow может вернуть false,  если кто-нибудь решит не выделять строку, но нельзя просто вернуть true, если выделение строки должно быть разрешено. Это приведёт к выделению строки даже в том случае, если предыдущий обработчик вернул false. Поэтому нужно тестировать свойство result параметра e. Если оно равно undefined , то другие обработчики события не вызывались перед вызовом нашего обработчика события. Если же значение e.result равно false или  "stop" , то предыдущий обработчик события решил отменить выделение. В этом случае мы должны вернуть значение  e.result (false) вместо true. Это означает, что мы не должны заставлять выделять строку. Мы просто должны учитывать решение предыдущего вызванного обработчика. Пример кода:

Или можно проверить явно на false и "stop" :

 

Цикл статей «Документация jqGrid на русском».

Следующая статья — «Порядок возникновения событий в jqGrid».
Предыдущая статья — «Список triggered-событий в jqGrid».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *