Jquery 免费jqGrid 4.8.0-恢复网格工具栏筛选器值

Jquery 免费jqGrid 4.8.0-恢复网格工具栏筛选器值,jquery,jqgrid,free-jqgrid,Jquery,Jqgrid,Free Jqgrid,我正在尝试在执行GridUnload之后将网格恢复到以前的状态,包括过滤器、排序、组等。我成功地恢复了所有这些数据,但在网格中缺少了一些不属于我要恢复的数据的可视方面,因此我看不到它们 例如,我确实恢复了过滤器值(工具栏过滤器),但在工具栏中看不到过滤器值。(它们就在那里,因为我可以使用$(“#gview”+$grid.attr('id')+“#”+inputId).val(column.data)还原它们,但我不知道如何在不手动迭代的情况下使它们重新出现 谢谢 Tal.我认为如果您已经填充了过

我正在尝试在执行GridUnload之后将网格恢复到以前的状态,包括过滤器、排序、组等。我成功地恢复了所有这些数据,但在网格中缺少了一些不属于我要恢复的数据的可视方面,因此我看不到它们

例如,我确实恢复了过滤器值(工具栏过滤器),但在工具栏中看不到过滤器值。(它们就在那里,因为我可以使用$(“#gview”+$grid.attr('id')+“#”+inputId).val(column.data)还原它们,但我不知道如何在不手动迭代的情况下使它们重新出现

谢谢


Tal.

我认为如果您已经填充了过滤器工具栏的所有字段,那么您可以调用
triggerToolbar
方法。请注意,该方法是DOM元素的方法。因此,您可以只调用

$grid[0].triggerToolbar();

最后,我通过执行以下操作恢复了工具栏过滤器:

  • 我将所有规则保存到一个临时变量(barFilter)中
  • 在网格恢复之后,我添加了一个新函数,用于获取barFilter并将值提取到restoreToolbarFilter($('#'+gridName),barFilter);:
  • regexEscape=函数{
    返回s.replace(/[-\/\^$*+.()|[\]{}]/g,'\\$&');
    };
    函数restoreToolbarFilter($grid,searchParams){
    for(输入searchParams){
    //还原搜索输入字符串
    var column=searchParams[key];
    inputId=regexEscape('gs_'+column.field);
    $(“#gview"”+$grid.attr('id')+“#”+inputId.val(column.data);
    //还原搜索筛选器类型和运算符符号
    运算符=$(“#gview_U3;”+$grid.attr('id')+'#'+inputId)。最近('tr')。查找('.soptclass');
    $(operator.attr('soper',column.op));
    操作数={“eq”:“=”,
    “ne”:“!”,
    “lt”:“=”,
    “bw”:“^”,
    “bn”:“!^”,
    “in”:“=”,
    “ni”:“!=”,
    “ew”:“|”,
    “en”:“!@”,
    “cn”:“~”,
    “nc”:“!~”,
    “nu”:“#”,
    “nn”:“!#”};
    $(运算符).text(操作数[column.op]);
    }
    
    }
    谢谢。triggerToolbar是否向服务器发出另一个post请求?如果是这种情况,我将连续两次调用服务器,结果都是相同的数据。我只需要“显示”工具栏中的值。@Tal:这取决于您使用的搜索选项(或
    filterToolbar
    的选项)。我个人总是使用
    stringResult:true
    。如果对服务器的请求包含与高级搜索相同格式的
    过滤器
    参数(请参阅),但只有一组原因。@Tal:
    triggerToolbar
    只需从筛选器工具栏读取值,将
    filters
    等选项添加到
    postData
    参数,将
    search
    参数设置为
    true
    ,并使用触发器
    reloadGrid
    向服务器发出请求或应用本地筛选。我使用earchResult:true。如果触发器工具栏调用reloadGrid,则意味着我将再次转到服务器。在还原网格时(在初始设置期间),我已经去过服务器一次,现在我只想“显示”过滤器值。如果实现这一点的唯一方法是重新加载网格,这将对性能造成一定的损失。@Tal:抱歉,但我不明白您已经实现了什么以及您仍然需要什么。您写了“我恢复了网格(在初始阶段)”。你的意思是什么?如果你从服务器端获取数据,那么我的网格只是选项的组合。如果我要保存或还原网格,我不会保存/还原任何数据,只是排序条件、过滤器、当前页码、选择的行等。我将通过向服务器发送请求来填充数据。它将是**t服务器数据库中当前数据的状态。