我正在创建一个网站,并在我的页面上有一个jqGrid。我通过向我的navgrid(寻呼机)添加一个调用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");
});
}
任何人都可以提供任何帮助吗?我想我很接近,我只需要以某种方式重置搜索窗口然后重新加载网格。
答案 0 :(得分:1)
答案结果是两件事。
首先,网格没有重新加载正确的数据,因为我没有正确处理服务器端代码。我最近开始使用PHP,我有一个错误,代码没有正确识别过滤器发布数据为空/空。
其次,我可以通过调用'searchGrid'函数重新打开它来重置搜索窗口对话框。因此,在显示搜索后,我将点击事件添加到重置按钮,如下所示: -
$(gridSelector).navButtonAdd(gridSelector + '_toolbar1',
{
caption: 'Search',
buttonicon: 'ui-icon-search',
title: 'Search',
onClickButton: function() { OpenAdvancedSearchDialog(gridSelector); }
});
}
function OpenAdvancedSearchDialog(gridSelector) {
$(gridSelector).jqGrid ('searchGrid', {
caption: 'Search',
multipleSearch:true,
overlay: false,
multipleGroup:true,
recreateFilter: true,
afterShowSearch: function() {
$('.fm-button-icon-left').click(function(){
OpenAdvancedSearchDialog(gridSelector);
});
}
});
}