我正在使用jqGrid,到目前为止一切都很好。但现在我正在努力让用户能够保存他们的搜索,以便他们以后可以检索它们和/或将它们应用到不同的网格中。实际上,储蓄实际上证明是容易的部分。我可以根据指定的postData过滤器对网格进行过滤,但搜索对话框不会使用过滤条件进行刷新。这是我的一个小测试:
$("#grid").jqGrid('navGrid','#pager', {edit: false, add: false, del: false, refresh: false, searchtext: 'Search'}, {}, {}, {},
{
multipleSearch: true,
closeAfterSearch: true,
closeOnEscape: true,
searchOnEnter: true,
Find: "Search",
afterShowSearch: function ()
{
...// code to create the save search buttons goes here
$("#fbox_" + gridID + "_save").bind('click', function()
{
var filters = {"groupOp":"AND","rules":[{"field":"id","op":"eq","data":"2"}]};
$('#grid').jqGrid('setGridParam',
{
postData: {'filters': filters}, search: true}).trigger('reloadGrid');
}
}
});
我尝试了几件事,但似乎没有任何东西可以让高级搜索对话框更新。
作为旁注...我没有重新设置Filter设置为true。似乎某处有一个错误......重新设置Filter设置为true,当你应用搜索,关闭对话框,重新打开搜索对话框,点击“重置”,关闭对话框,然后返回,没有可用的选项。我得到的只是“分组”选项(AND / OR)。我在Oleg的一些演示中对此进行了测试,结果是一样的,所以这不仅仅是我的代码。
答案 0 :(得分:1)
设置recreateFilter:true解决了显示问题。但是,它仍有问题,在您单击“重置”按钮后,关闭搜索对话框,然后返回搜索对话框,您只能看到组操作员下拉列表(“AND / OR”)和旁边的“+”按钮。我能够通过触发“+”按钮上的点击事件来解决这个问题
var tableRows = $('#fbox_grid > table').find('tr');
if (tableRows.length == 2)
{
$('input[type="button"]').trigger('click');
}
现在一切都很好。