2016-12-28 5 views
0

Я использую последнюю версию бесплатно jqGrig от Oleg.jgGrid и событие ResetFilterToolbar

Я знаю, что в версиях, свободных-jqGrid, многие другие события добавляются в отличие от jqGrid.

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:events#list_of_events

Перечитал много подобных ответов, но события не работают для меня.

jqGrid 'clearToolbar' without grid reload

Вот что-то подобное, но в качестве примера событие при нажатии пользовательской кнопки. Это необходимо для меня, что при нажатии на ClearToolbar добавить пользовательскую проверку на событие «jqGridToolbarBeforeClear» или «jqGridToolbarAfterClear».

+0

Вы писали про "пользовательскую кнопку". Не могли бы вы объяснить, что именно вы делаете, и описать более подробно, что вы пытаетесь реализовать? Вы каким-то образом добавили пользовательскую кнопку к панели инструментов ** поиска фильтра ** (см. 'FilterToolbar') или вы имеете в виду ** навигационную панель ** (см.' NavGrid')? Может быть, события jqGridToolbarBeforeClear и jqGridToolbarAfterClear не являются событиями, которые вам действительно нужны. Какой тип данных вы используете? В целом, это полезно в большинстве случаев, если вы публикуете код JavaScript или демонстрационную версию, которая показывает, что вы делаете. – Oleg

+0

Вы писали о «пользовательской проверке события jqGridToolbarBeforeClear или jqGridToolbarAfterClear». Нужно ли вам ** останавливать ** обработку в некоторых случаях? Это возможно только в 'jqGridToolbarBeforeClear' и только. Он должен возвращать значение '' stop ''. – Oleg

+0

Спасибо Олегу за ответ. Да, я должен в некоторых случаях прекратить обработку фильтра. Я использую только filterToolbar. datatype: 'json' –

ответ

1

Основная причина вашей проблемы - использование неправильного события. Событие jqGridToolbarBeforeClear будет инициировано внутри метода clearToolbar, но вы хотите предотвратить обработку перезагрузки сетки внутри triggerToolbar. Таким образом, вы должны использовать событие jqGridToolbarBeforeSearch.

Главным образом правильная реализация обработчика событий jqGridToolbarBeforeSearch выглядит следующим образом:

$("#grid").on("jqGridToolbarBeforeSearch", function (e) { 
    var filters = $(this).jqGrid("getGridParam", "postData").filters; 
    if (typeof filters === "string") { 
     filters = $.parseJSON(filters); 
    } 
    if (filters) { 
     /* add here you custom tests */ 
     return "stop"; 
    } 

    return e.result; // forward the result of the last event handler 
}); 

Основное преимущество событий использования по сравнению с обратным вызовом заключается в следующем: можно определить несколько обработчиков событий, но только один обратный вызов. Если одно событие возвращает «стоп» для предотвращения обработки, следующее событие может переписать значение с другим значением. Чтобы разрешить прекратить обработку в случае любой обработчик события «stop» следует использовать event.result в каждый обработчик события.

+0

Все работает отлично! Спасибо –

+0

@AndreiDemidow: Добро пожаловать! – Oleg

 Смежные вопросы

  • Нет связанных вопросов^_^