我正在创建一个网站并在我的页面上有一个 jqGrid。我通过向调用 jqGrid 'searchGrid' 函数的导航网格(寻呼机)添加自定义按钮来使用高级搜索功能。
$('#My_Grid_Id').jqGrid(settingsObject)
.navGrid('My_Grid_Id_toolbar1',{del:false,add:false,edit:false,refresh:false,search:false})
.navButtonAdd('My_Grid_Id_toolbar1',
{
caption: 'Search',
buttonicon: 'ui-icon-search',
title: 'Search',
onClickButton: function() {
$(gridSelector).jqGrid ('searchGrid', {
caption: 'Search',
multipleSearch:true,
overlay: false,
multipleGroup:true,
recreateFilter: true
});
}
});
我希望能够在用户离开页面时保存搜索设置,以便在用户返回时重新加载它们。我几乎有了一个可行的解决方案,但是在我保存并重新加载搜索设置后,搜索对话框窗口上的“重置”按钮无法按预期工作。搜索设置似乎在后台重置,但窗口没有刷新,网格仍然显示旧结果。
解释一下。我通过使用 ajax 调用将 potdata.filters 参数发送到服务器来捕获窗口卸载事件并存储搜索设置。然后我将数据存储在一个 cookie 中,以后可以加载。
$(window).unload( function () {
$.ajax({
type: "POST",
url: saveUrl,
dataType: 'json',
traditional: true,
async: false,
data: {
searchSettings: $('#My_Grid_Id').getGridParam('postData').filters
}
});
});
当我重新加载网格时,我检查我的 cookie 是否有值,然后将保存的过滤器插入到构造函数中的网格中。
postData: {
filters: mySavedSearchSettings
},
此时网格运行良好,搜索已保存,结果按预期显示。当我打开搜索窗口对话框时,搜索选项会按预期显示。但是当我单击“重置”按钮时,窗口没有正确更新,网格结果也没有。我试图将 onclick 事件添加到重置按钮以手动重置搜索,但似乎没有任何反应。
afterShowSearch: function() {
$('.fm-button-icon-left').click(function(){
$('#My_Grid_Id').jqGrid('setGridParam', { search: false, postData: { "filters": ""} }).trigger("reloadGrid");
});
}
任何人都可以提供任何帮助吗?我想我已经接近了,我只需要以某种方式重置搜索窗口然后重新加载网格。