JqGrid:在列重新设置范围后恢复包含列筛选器的状态

JqGrid:在列重新设置范围后恢复包含列筛选器的状态,jqgrid,filter,state,restore,Jqgrid,Filter,State,Restore,在重新调整大小、重新排序、隐藏列之后,我需要保存网格的状态 所有这些都可以正常工作,除了在移动包含筛选器的列(collumnchooser)后,列筛选器(下拉列表、文本字段、日期选择器)没有恢复到正确的列中 使用下面的JavaScript,我可以恢复我所需要的大部分内容(列的大小、顺序和可见性),但是恢复正确列中的过滤器不起作用。(过滤器显示在其应该显示的位置后的几列中 var listName = jQuery('#list').jqGrid('getGridParam', 'customNa

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

所有这些都可以正常工作,除了在移动包含筛选器的列(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);
    }
}
var listName=jQuery('#list').jqGrid('getGridParam','customName');
var colModel=LoadColumnModel(listName);
var perm=jQuery.cookies.get(listName+'\u list\u perm');
var rowNumber=jQuery.cookies.get(listName+“\u list\u rowNumber”);
if(colModel){
var grid=jQuery(“#list”);
对于(var i=0;i

任何人都有线索吗?

你不应该在网格中设置
searchoptions
。相反,你可以保存/恢复jqGrid的
postData
参数


我建议您查看和。它显示了如何实现网格状态的保存/恢复。我使用了
localStorage
而不是cookies,因为我在中解释了原因。

感谢所有丰富信息的链接,但我不需要postData(未选择任何内容时,其中不包含太多信息),我只需要在重新排序网格后在右栏中显示过滤器,collumns已重新排序/隐藏。此时我不需要过滤器的值。@Steven:在搜索时,请查看
postData
。它包含有关搜索过滤器的完整信息。例如,请查看演示。您指的是什么关于“过滤器”?它可以以多种方式进行解释。您是否使用高级搜索或
filterToolbar
?任何类型的搜索都是应用于网格的筛选器。如果您需要重新填充搜索工具栏,请查看。感谢您快速的回答,很抱歉没有准确指出我的问题。我的意思是下面显示的filterToolbarw列标题和网格数据上方。我对许多列使用“下拉过滤器”。但我的问题不是在搜索后恢复选定的值,而是简单地恢复过滤器工具栏右列中的过滤器位置。此时,当我在collumchooser中重新设置collumns的范围时,更改列顺序(columnindex)或者隐藏它们。筛选器不会出现在它们相应的列上。我会查看您的示例,看是否能在其中找到解决方案。@Steven:这应该是您的实现中的一个错误。请尝试复制我在回答中引用的内容。您可以隐藏一些列,更改列顺序,设置一些筛选器,等等,然后重新加载页面或再次打开它。您将看到与以前完全相同的数据。我可以看到的过滤器工具栏中的位置没有问题。是的,这正是我需要的,但我无法将我的机制重构到您的机制中,因为这是一种完全不同的方法。顺便说一句,我认为在重新排列列thr时,您的网格中也存在一个小错误通过columnchooser,并在离开页面后立即恢复columnchooser中定义的状态。