免费的 jqGrid 4.8.0 - 恢复网格工具栏过滤器值

Free jqGrid 4.8.0 - restore grid toolbarfilter values

我正在尝试在执行 GridUnload 后将网格恢复到它在过滤、排序、分组等方面的先前状态'。我成功地恢复了所有这些,但在网格中丢失了一些不属于我正在恢复的数据的视觉方面,因此我看不到它们。

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

谢谢,

总计

我认为,如果您已经填写 过滤器工具栏的所有字段,那么您只需调用triggerToolbar 方法即可。注意方法是DOM元素的方法。所以你可以打电话

$grid[0].triggerToolbar();

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

  1. 我将所有规则保存到一个临时变量 (barFilter) 中。
  2. 网格恢复后,我添加了一个新函数来获取 barFilter 并将值提取到它们的位置 restoreToolbarFilter($('#'+gridName),barFilter);:

regexEscape = function(s) {
   return s.replace(/[-\/\^$*+?.()|[\]{}]/g, '\$&');
};

function restoreToolbarFilter($grid,searchParams){
 
    
    for (key in searchParams) {
     // Restore the search input string
     var column = searchParams[key];
     
     inputId = regexEscape('gs_' + column.field);
    
     
     $("#gview_"+$grid.attr('id')+' #' + inputId).val(column.data);
     
     // Restore the search filter type and operator symbol
     operator = $("#gview_"+$grid.attr('id')+' #' + inputId).closest('tr').find('.soptclass');
     $(operator).attr('soper', column.op);
     operands = {  "eq":"==",
         "ne":"!",
         "lt":"<",
         "le":"<=",
         "gt":">",
         "ge":">=",
         "bw":"^",
         "bn":"!^",
         "in":"=",
         "ni":"!=",
         "ew":"|",
         "en":"!@",
         "cn":"~",
         "nc":"!~",
         "nu":"#",
         "nn":"!#" };
     $(operator).text(operands[column.op]);
    }
}