【发布时间】:2011-08-21 23:32:21
【问题描述】:
当我使用 jqgrid 并在顶部工具栏过滤器或高级过滤器中输入值,然后单击网格页脚中的“刷新网格”按钮时,它会清除过滤器中的值。
这是 jqgrid 中的一个错误,还是您必须明确地做一些事情来保持工具栏列过滤器的状态。
有没有办法让它工作?
【问题讨论】:
当我使用 jqgrid 并在顶部工具栏过滤器或高级过滤器中输入值,然后单击网格页脚中的“刷新网格”按钮时,它会清除过滤器中的值。
这是 jqgrid 中的一个错误,还是您必须明确地做一些事情来保持工具栏列过滤器的状态。
有没有办法让它工作?
【问题讨论】:
您如何在 jqGrid 的源代码中看到(请参阅here)该行为是设计使然。我能找到的最旧的 jqGrid 版本是 jqGrid 3.5.2,在这个版本中,网格过滤器也被重置了。
如果您需要重新加载按钮的其他行为,您可以添加(使用navButtonAdd)您的自定义按钮,该按钮看起来像原始重新加载按钮(它具有“ui-icon-refresh”作为buttonicon 参数)并实现另一种重新加载的行为。例如,您可以拨打trigger("reloadGrid", [{page:1}])。
重新加载自定义的另一种可能性是beforeRefresh 和afterRefresh 事件。
【讨论】:
loadonce:true 的情况下,我将首先保存datatype 的原始值('json' 或'xml')并在“刷新”按钮中重置datatype 的原始值并重新加载网格而不更改过滤器。
$("#items-list").jqGrid({ etc... pager: '#items-pager', etc.... }).navGrid('#items-pager', { search: false, edit: false, add: false, del: false, refresh: false, searchtext: 'Filter' }, {}, {},{}, {closeAfterSearch: true, closeAfterReset: true, multipleSearch: false } ).navButtonAdd("#items-pager", {caption:'', buttonicon: 'ui-icon-refresh', onClickButton: function() {$("#items-list").trigger("reloadGrid");}, position: 'first', title: 'Refresh'} ).filterToolbar({ autosearch: true, stringResult: true, searchOnEnter: false} );