我设法完成了这件事,我很高兴与大家分享这个。我已经在解释下方发布了我的整个 jqgrid 代码供您参考。
所以首先,我使用 JSON 作为结果,因此使用 jsonReader。
接下来,以下是特定于实现 {{search: remote},{sorting: local}, {pagination: local}} 行为的设置。
设置loadonce: false
或点击“搜索”按钮不会点击服务器,而是始终进行本地搜索。
我想实现 jqGrid 的多重搜索功能,因此让微小的“放大镜”出现在您的寻呼机栏中。
jQuery("#list2").jqGrid('navGrid','#pager2',{ del:false,add:false,edit:false},{},{},{},{multipleSearch:true});
现在我实现远程搜索功能的方法是在 onSearch 和 onClose 事件上将数据类型从本地切换到 json。即在触发搜索查询(即单击“查找”按钮)时,我将 loadonce 设置为 false 并将数据类型设置为 json。这确保了远程搜索。现在我们的网格填充了远程搜索数据,我们必须切换回 datatype:local,但是显式设置它 onClose 不起作用,所以我设置 loadonce: true 稍后设置 datatype: local 本身。另请注意,我有 closeAfterSearch: true、closeOnEscape: true,因此我确保在触发搜索查询后始终关闭 onClose 事件。
jQuery("#list2").jqGrid('searchGrid', {multipleSearch: true, closeAfterSearch: true, closeOnEscape: true,
onSearch: function(){$("#list2").setGridParam({loadonce: false, datatype: 'json'});
$("#list2").trigger("reloadGrid");
}, onClose: function(){$("#list2").trigger("reloadGrid");
$("#list2").setGridParam({loadonce: true});
$(".ui-icon-refresh").trigger('click');
}
});
加载结果$(".ui-icon-refresh").trigger('click');
后强制刷新。在某些情况下这是必要的(不知道为什么)。我自己偶然发现了这个修复程序,我不确定它为什么会起作用。如果您有想法,我很想知道它背后的原因。
最后,每次我的网格加载时,默认情况下都会弹出搜索框。所以我通过简单地让 jquery 单击模态框的“x”按钮来强制关闭它。哈克但有效!:P
$(".ui-icon-closethick").trigger('click');
<<<整个jqGrid代码>>>
请原谅我在代码中的'xyz'。我在那里有一些 Django 代码,所以我只是用 xyz 替换它以避免任何混淆。
jQuery(document).ready(function(){
$("#list2").jqGrid({
url:'xyz',
datatype: 'json',
loadonce: false,
mtype: 'GET',
colNames:xyz
colModel :xyz,
jsonReader : {
repeatitems: false,
root: "rows",
page: "page",
total: "total",
records: "records"
},
height: '100%',
width: '100%',
pager: '#pager2',
rowNum:15,
rowList:[10,15,30],
viewrecords: true,
caption: ' ',
autowidth: false,
shrinkToFit: true,
ignoreCase:true,
gridview: true
});
jQuery("#list2").jqGrid('navGrid','#pager2',{ del:false,add:false,edit:false},{},{},{}, {multipleSearch:true});
jQuery("#list2").jqGrid('navButtonAdd', '#pager2',
{
caption: "", buttonicon: "ui-icon-calculator", title: "choose columns",
onClickButton: function() {
jQuery("#list2").jqGrid('columnChooser');
}
});
jQuery("#list2").jqGrid('searchGrid', {multipleSearch: true, closeAfterSearch: true, closeOnEscape: true,
onSearch: function(){$("#list2").setGridParam({loadonce: false, datatype: 'json'});
$("#list2").trigger("reloadGrid");
},
onClose: function(){$("#list2").trigger("reloadGrid");
$("#list2").setGridParam({loadonce: true});
$(".ui-icon-refresh").trigger('click');
}
});
$(window).bind('resize', function () {
clearTimeout(resizeTimer);
resizeTimer = setTimeout(resizeGrids, 60);
divwidth = $(".content-box-header").width() - 40;
//alert(divwidth);
$("#list2").setGridWidth(divwidth,true);
});
$(window).resize();
$(".ui-icon-closethick").trigger('click');
});