【问题标题】:Free jqGrid 4.8.0 - restore grid toolbarfilter values免费 jqGrid 4.8.0 - 恢复网格工具栏过滤器值
【发布时间】:2015-04-02 15:39:16
【问题描述】:

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

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

谢谢,

塔尔。

【问题讨论】:

    标签: jquery jqgrid free-jqgrid


    【解决方案1】:

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

    $grid[0].triggerToolbar();
    

    【讨论】:

    • 谢谢。 triggerToolbar 是否向服务器触发另一个发布请求?如果是这种情况,我将导致对服务器的两次连续调用,结果是相同的数据。我所需要的只是“显示”工具栏中的值。
    • @Tal:这取决于搜索选项(或您使用的 filterToolbar 选项)。我个人总是使用stringResult: true option。如果对服务器的请求包含filters 参数,其格式与高级搜索的情况相同(请参阅here),但只有一组原因。
    • @Tal: triggerToolbar 只需从过滤器工具栏中读取值,将filters 等选项添加到postData 参数,将search 参数设置为true 和触发器reloadGrid向服务器发出请求或应用本地过滤。
    • 我使用 searchResult:true。如果触发工具栏调用 reloadGrid,这意味着我再次访问服务器。当我恢复网格时(在它的初始阶段),我已经去过一次服务器,现在我只想“显示”过滤器值。如果实现这一点的唯一方法是再次重新加载网格,那么性能就会受到影响。
    • @Tal:对不起,但我不明白你已经实现了什么以及你仍然需要什么。你写了“我恢复了网格(在它的初始阶段)”。你是什​​么意思?如果您从 服务器端 获取数据,那么对我来说,网格只是选项的组合。如果我要 saverestore 网格,我不会保存/恢复任何数据,只是排序标准、过滤器、当前页码、选择了哪些行/行以及很快。 我将通过向服务器发送请求来填充的数据。它将是**当前服务器数据库中数据的当前状态。
    【解决方案2】:

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

    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]);
    				}
    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      相关资源
      最近更新 更多