Помните (сохраняют) фильтр, порядок сортировки и текущую страницу jqGrid

Мои пользователи приложения спросили, было ли это возможно для страниц, которые содержат jqGrid для запоминания фильтра, порядка сортировки и текущей страницы сетки (потому что, когда они нажимают объект сетки, чтобы выполнить задачу и затем вернуться к нему, они хотели бы, чтобы это было, "когда они оставили его"),

Cookie, кажется, путь вперед, но как заставить страницу загружать их и устанавливать их в сетке, прежде чем это выполнит свой первый запрос данных, немного вне меня на данном этапе.

У кого-либо есть опыт с такого рода вещью с jqGrid?Спасибо!

28
задан Jimbo 10 June 2010 в 14:13
поделиться

3 ответа

ПРОБЛЕМА РЕШЕНА

В конечном итоге я использовал файлы cookie в javascript для хранения столбца сортировки, порядка сортировки, номера страницы, строк сетки и деталей фильтра сетки (используя файлы cookie JSON / Javascript - prefs ] объект)

Сохранить настройки - Вызывается из $ (window) .unload (function () {...});

var filters = {
    fromDate: $('#fromDateFilter').val(),
    toDate: $('#toDateFilter').val(),
    customer: $('#customerFilter').val()
};

prefs.data = {
    filter: filters,
    scol: $('#list').jqGrid('getGridParam', 'sortname'),
    sord: $('#list').jqGrid('getGridParam', 'sortorder'),
    page: $('#list').jqGrid('getGridParam', 'page'),
    rows: $('#list').jqGrid('getGridParam', 'rowNum')
};

prefs.save();

Загрузить настройки - Вызывается из $ (document) .ready (function () {...});

var gridprefs = prefs.load();

$('#fromDateFilter').val(gridprefs.filter.fromDate);
$('#toDateFilter').val(gridprefs.filter.toDate);
$('#customerFilter').val(gridprefs.filter.customer);

$('#list').jqGrid('setGridParam', {
    sortname: gridprefs.scol,
    sortorder: gridprefs.sord,
    page: gridprefs.page,
    rowNum: gridprefs.rows
});

// filterGrid method loads the jqGrid postdata with search criteria and re-requests its data
filterGrid();

Ссылка на jqGrid: http://www.secondpersonplural.ca/jqgriddocs/_2eb0fi5wo.htm

ПО ПОПУЛЯРНОМУ СПРОСУ - КОД ФИЛЬТР-СЕТКИ

    function filterGrid() {
        var fields = "";
        var dateFrom = $('#dateFrom').val();
        var dateTo = $('#dateTo').val();

        if (dateFrom != "") fields += (fields.length == 0 ? "" : ",") + createField("shipmentDate", "ge", dateFrom);
        if (dateTo != "") fields += (fields.length == 0 ? "" : ",") + createField("shipmentDate", "le", dateTo);

        var filters = '"{\"groupOp\":\"AND\",\"rules\":[' + fields + ']}"';

        if (fields.length == 0) {
            $("#list").jqGrid('setGridParam', { search: false, postData: { "filters": ""} }).trigger("reloadGrid");
        } else {
            $("#list").jqGrid('setGridParam', { search: true, postData: { "filters": filters} }).trigger("reloadGrid");
        }

    }

    function createField(name, op, data) {
        var field = '{\"field\":\"' + name + '\",\"op\":\"' + op + '\",\"data\":\"' + data + '\"}';
        return field;
    }
27
ответ дан 28 November 2019 в 03:41
поделиться

Часть работы, что вам нужно, вы можете реализовать с помощью jqGridExport и jqGridImport (см. http://www. trirand.com/jqgridwiki/doku.php?id=wiki:import_methods), но мне кажется, что вы хотите большего, чем есть в jqGrid. Некоторые дополнительные возможности вам придется реализовать самостоятельно.

2
ответ дан 28 November 2019 в 03:41
поделиться

Если пользователь входит в систему, вы можете отправлять запросы AJAX обратно на сервер при изменении этих параметров. Затем вы можете сохранить настройки либо в базе данных (чтобы сделать их постоянными), либо в сеансе (чтобы сохранить их временно), либо в обоих случаях (из соображений производительности).

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

1
ответ дан 28 November 2019 в 03:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: