jgGrid and event ResetFilterToolbar

171 views Asked by At

I use last version free-jqGrig by Oleg.

I know that in versions, free-jqGrid, many other events are added in difference from jqGrid.

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

Has re-read many similar answers, but events don't work for me.

jqGrid 'clearToolbar' without grid reload

Here something similar, but in an example an event when pressing the custom button. It is necessary for me that when pressing on to ClearToolbar to add the custom check on event "jqGridToolbarBeforeClear" or "jqGridToolbarAfterClear".

1

There are 1 answers

0
Oleg On BEST ANSWER

The main reason of your problem is the usage of wrong event. The event jqGridToolbarBeforeClear will be triggered inside of the method clearToolbar, but you want to prevent processing of reloading of the grid inside of triggerToolbar. Thus you should use jqGridToolbarBeforeSearch event instead.

The mostly correct implementation of event handler jqGridToolbarBeforeSearch looks like the following:

$("#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
});

The main advantage of the usage events comparing to callback is the following: one can define multiple event handlers, but only one callback. If one event returns "stop" to prevent processing then the next event could overwrite the value with another value. To allow to stop processing in case of any event handler return "stop" one should use event.result in every event handler.