Как сохранить и восстановить состояние фильтра таблицы данных primefaces с помощью специального фильтра (selectCheckboxMJquery

Программирование на jquery
Ответить Пред. темаСлед. тема
Anonymous
 Как сохранить и восстановить состояние фильтра таблицы данных primefaces с помощью специального фильтра (selectCheckboxM

Сообщение Anonymous »

У меня есть таблица данных Primefaces, и я хочу отфильтровать ее с помощью selectCheckboxMenu
Сам фильтр работает хорошо. Я могу фильтровать таблицу данных, и после перезагрузки сайта там также присутствуют только отфильтрованные значения.

Моя проблема в том, что после перезагрузки состояние фильтра таблицы данных исчезает. . Я вижу, что фильтр сработал, но не вижу значения фильтра в заголовке таблицы данных.

Форма с таблицей данных:

Код: Выделить всё

lazy="true">



... columns ...









 $(function(){ loadDatatableState(); }); 
Значения фильтра сохраняются и загружаются с помощью JavaScript. Методы находятся в файле DataTableFilterStorage.js:

Код: Выделить всё

function saveDatatableState(){
var filterNormal = $('form .ui-column-filter').serialize();
var filterCustomText = $('form .ui-column-customfilter .ui-inputfield').serialize()
if (filterNormal != "" && filterCustomText != "") {
$(fFilter).val(filterNormal + '&' + filterCustomText);
} else {
$(fFilter).val(filterNormal + filterCustomText);
}
var page = $('.ui-paginator-page.ui-state-active:first').text();
if(!page) page = 0;
var scrollPos = $('body').scrollTop();
if(!scrollPos) scrollPos = 0;
$(#page).val(page);
$(#npages).val($('#yui-pg0-0-rpp').val());
$(#scrollPos).val(scrollPos);
}

function loadDatatableState(){
var filters = $(#filters).val().split('&');
if (filters != ""){
for(var i = 0; i < filters.length; i++){
var f = filters[i].split("=");
if(f.length != 2 || f[1].length < 1) continue;
$('#'+f[0].replace(/%3A/g, '\\:')).val(decodeURIComponent(f[1]).replace('+', ' '));
//For Dropdown-Menues
$('#'+f[0].replace(/%3A/g, '\\:') + ' option:selected').val(decodeURIComponent(f[1]).replace('+', ' '));
}
}

var handler = function(e, xhr, settings) {
if($(#page).val().length > 0 && $(#page).val() != 1){
var p = $('a.ui-paginator-page[page='+$(#page).val()+']:first');
if(p.length > 0){
p.attr('id', 'currentPage');
var event = document.createEvent("HTMLEvents");
event.initEvent("click", true, true);
document.getElementById('currentPage').dispatchEvent(event);
}
}
$(#form).unbind('ajaxComplete', handler);
};
$(#form).ajaxComplete(handler);
};
Значения фильтра из обычного текстового поля, раскрывающегося меню (опция одиночного выбора) и маски ввода сохраняются и загружаются правильно, но значения фильтра из selectCheckboxMenu не сохраняются. т.

Причиной того, что фильтры не сохраняются должным образом, является строка $(#filter).val($('form .ui-column-filter' ).serialize());. Он сохраняет только фильтры типа «ui-column-filter». Фильтры из selectCheckboxMenu имеют тип ui-column-customfilter. Я попытался выбрать значения, изменив строку на $(#filter).val($('form .ui-column-customfilter').serialize());, но это не сработало.

Решение должно работать в IE 11. Я использую Primefaces 5.2 и JSF 2.0.

Подробнее здесь: https://stackoverflow.com/questions/388 ... tum-filter
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Jquery»