Commit 07c7236b by Qiang Xue

GridView filter now works with Pjax.

parent e63a8247
...@@ -50,19 +50,33 @@ ...@@ -50,19 +50,33 @@
return; return;
} }
} }
var data = $(settings.filterSelector).serialize();
var url = settings.filterUrl; methods.applyFilter.apply($e);
if (url.indexOf('?') >= 0) {
url += '&' + data;
} else {
url += '?' + data;
}
window.location.href = url;
return false; return false;
}); });
}); });
}, },
applyFilter: function () {
var $grid = $(this);
var settings = $grid.data('yiiGridView').settings;
var data = $(settings.filterSelector).serialize();
var url = settings.filterUrl;
if (url.indexOf('?') >= 0) {
url += '&' + data;
} else {
url += '?' + data;
}
$grid.find('form.gridview-filter-form').remove();
var $form = $('<form action="' + url + '" method="get" class="gridview-filter-form" style="display:none" data-pjax></form>').appendTo($grid);
$.each(yii.getQueryParams(url), function (name, value) {
$form.append($('<input type="hidden" name="t" value="" />').attr('name', name).val(value));
});
$form.submit();
},
setSelectionColumn: function (options) { setSelectionColumn: function (options) {
var $grid = $(this); var $grid = $(this);
var data = $grid.data('yiiGridView'); var data = $grid.data('yiiGridView');
......
...@@ -152,6 +152,19 @@ yii = (function ($) { ...@@ -152,6 +152,19 @@ yii = (function ($) {
return false; return false;
}, },
getQueryParams: function (url) {
var pos = url.indexOf('?');
if (pos < 0) {
return {};
}
var qs = url.substring(pos + 1).split('&');
for(var i = 0, result = {}; i < qs.length; i++){
qs[i] = qs[i].split('=');
result[decodeURIComponent(qs[i][0])] = decodeURIComponent(qs[i][1]);
}
return result;
},
initModule: function (module) { initModule: function (module) {
if (module.isActive === undefined || module.isActive) { if (module.isActive === undefined || module.isActive) {
if ($.isFunction(module.init)) { if ($.isFunction(module.init)) {
......
...@@ -164,7 +164,7 @@ class Pjax extends Widget ...@@ -164,7 +164,7 @@ class Pjax extends Widget
$view = $this->getView(); $view = $this->getView();
PjaxAsset::register($view); PjaxAsset::register($view);
$js = "jQuery(document).pjax($linkSelector, \"#$id\", $options);"; $js = "jQuery(document).pjax($linkSelector, \"#$id\", $options);";
$js .= "jQuery(document).on('submit', $formSelector, function (event) {jQuery.pjax.submit(event, '#$id');});"; $js .= "\njQuery(document).on('submit', $formSelector, function (event) {jQuery.pjax.submit(event, '#$id');});";
$view->registerJs($js); $view->registerJs($js);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment