mirror of
https://github.com/yiisoft/yii2.git
synced 2025-08-17 07:51:12 +08:00
Created beforeFilter and afterFilter grid events
Events `beforeFilter.yiiGridView` and `afterFilter.yiiGridView` javascript events created for advanced use cases.
This commit is contained in:

committed by
Qiang Xue

parent
48d2204226
commit
f95be734cf
@ -28,6 +28,31 @@
|
|||||||
|
|
||||||
var gridData = {};
|
var gridData = {};
|
||||||
|
|
||||||
|
|
||||||
|
var gridEvents = {
|
||||||
|
/**
|
||||||
|
* beforeFilter event is triggered before filtering the grid.
|
||||||
|
* The signature of the event handler should be:
|
||||||
|
* function (event, form)
|
||||||
|
* where
|
||||||
|
* - event: an Event object.
|
||||||
|
* - form: is the grid filter form that will be submitted
|
||||||
|
*
|
||||||
|
* If the handler returns a boolean false, it will stop further form validation after this event. And as
|
||||||
|
* a result, beforeFilter event will not be triggered.
|
||||||
|
*/
|
||||||
|
beforeFilter: 'beforeFilter.yiiGridView',
|
||||||
|
/**
|
||||||
|
* afterFilter event is triggered after filtering the grid and filtered results are fetched.
|
||||||
|
* The signature of the event handler should be:
|
||||||
|
* function (event, form)
|
||||||
|
* where
|
||||||
|
* - event: an Event object.
|
||||||
|
* - form: is the grid filter form that will be submitted
|
||||||
|
*/
|
||||||
|
afterFilter: 'afterFilter.yiiGridView'
|
||||||
|
};
|
||||||
|
|
||||||
var methods = {
|
var methods = {
|
||||||
init: function (options) {
|
init: function (options) {
|
||||||
return this.each(function () {
|
return this.each(function () {
|
||||||
@ -60,7 +85,7 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
applyFilter: function () {
|
applyFilter: function () {
|
||||||
var $grid = $(this);
|
var $grid = $(this), event;
|
||||||
var settings = gridData[$grid.prop('id')].settings;
|
var settings = gridData[$grid.prop('id')].settings;
|
||||||
var data = {};
|
var data = {};
|
||||||
$.each($(settings.filterSelector).serializeArray(), function () {
|
$.each($(settings.filterSelector).serializeArray(), function () {
|
||||||
@ -81,10 +106,19 @@
|
|||||||
$.each(data, function (name, value) {
|
$.each(data, function (name, value) {
|
||||||
$form.append($('<input type="hidden" name="t" value="" />').attr('name', name).val(value));
|
$form.append($('<input type="hidden" name="t" value="" />').attr('name', name).val(value));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// triggers a beforeFilter grid event with the filter form as a parameter
|
||||||
|
event = $.Event(gridEvents.beforeFilter);
|
||||||
|
$form.trigger(event, [$form]);
|
||||||
|
if (event.result === false) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$form.submit();
|
$form.submit();
|
||||||
|
|
||||||
// triggers a filter grid event with the filter form as a parameter
|
// triggers a afterFilter grid event with the filter form as a parameter
|
||||||
$grid.trigger('filter.yiiGridView', [$form]);
|
event = $.Event(gridEvents.afterFilter);
|
||||||
|
$grid.trigger(event, [$form]);
|
||||||
},
|
},
|
||||||
|
|
||||||
setSelectionColumn: function (options) {
|
setSelectionColumn: function (options) {
|
||||||
@ -129,4 +163,3 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
})(window.jQuery);
|
})(window.jQuery);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user