JqG​​rid:在列排列后恢复状态,包括列过滤器

时间:2012-01-12 09:56:39

标签: jqgrid filter state restore

在重新调整大小,重新排序,隐藏列之后,我需要将状态保存到网格中。

一切正常,除了在移动了过滤器的列(collumnchooser)后,列过滤器(下拉列表,文本字段,日期选择器)没有在正确的列中恢复。

使用以下JavaScript,我可以恢复大多数我需要的内容(列的大小,顺序和可见性),但是在右列中恢复过滤器不起作用。 (过滤器会在应有的位置后出现几列。

var listName = jQuery('#list').jqGrid('getGridParam', 'customName');

var colModel = LoadColumnModel(listName);
var perm = jQuery.cookies.get(listName + '_list_perm');
var rowNumber = jQuery.cookies.get(listName + '_list_rowNumber');

if (colModel) {
    var grid = jQuery('#list');
    for (var i = 0; i < colModel.length; i++) {
        var column = colModel[i];
        if (column.hidden) {
            grid.jqGrid('hideCol', column.name);
        };
        ***//I hoped next line would do the trick, but it didn't :(***
        if (column.search && column.searchoptions) {
            grid.jqGrid('setColProp', column.name, { search: true, searchoptions:   column.searchoptions });
        };
    }
    grid.jqGrid('setGridParam', { colModel: colModel });
    loadGrid = false;
    if (rowNumber) {
        grid.jqGrid('setGridParam', { rowNum: rowNumber });
        jQuery('.ui-pg-selbox').val(rowNumber);
    }
    grid.trigger('reloadGrid');
    if (perm) {
        grid.jqGrid("remapColumns", perm, true);
    }
}

任何人都有线索?

1 个答案:

答案 0 :(得分:1)

您不应在网格中设置searchoptions。而不是你可以保存/恢复jqGrid的postData参数。

我建议您查看the answerthe answerthis one。它显示了如何实现网格状态的保存/恢复。由于我在the answer中解释的原因,我使用了localStorage而不是Cookie。