我有一个带有两个按钮的过滤器的网页,它们加载了jqGrid的数据。
当用户点击'过滤'时,我生成了postData json对象并将其发送到服务器。这很好。
但是当用户点击“清除”时,我想清除过滤器并从jqGrid重新加载所有数据。那就是我被困在哪里。
按钮点击的jQuery代码在这里:
$('#btnFilter').click(function (event) {
var filterObject = {
RecordID: $('#RecordID').val()
, Student: $('#Student').val()
}
$("#jqGrid").jqGrid().setGridParam({ postData: { Filters: filterObject }, page: 1 }).trigger("reloadGrid");
});
$('#btnClear').click(function (event) {
var filterObject = {};
$("#jqGrid").jqGrid().setGridParam({ postData: { Filters: filterObject }, page: 1 }).trigger("reloadGrid");
});
即使我使用{}为filterObject设置了null JSON对象,浏览器也会缓存Filters值,但我无法将其删除。在下面的屏幕截图中,我们可以看到Ajax Post和在“清除”时发送到服务器的对象。单击按钮。
我想知道如何清除' Clear'点击。或者,如果有更好的方法来实现我想要的,请你建议吗?
答案 0 :(得分:0)
如果有人想知道,您可以传递null以使之前的JSON对象无效。完整的代码在这里。
$("#jqGrid").jqGrid().setGridParam({ postData: { Filters: null}, page: 1 }).trigger("reloadGrid");
答案 1 :(得分:0)
如果您了解jqGrid在一个内部对象中保存所有参数,那么这很容易做到。你可以使用
var p = $("#jqGrid").jqGrid("getGridParam");
获取jqGrid的所有选项。您可以直接在对象中修改属性。 postData
可通过p.postData
访问。如果您只需要修改postData
,则可以使用
var postData = $("#jqGrid").jqGrid("getGridParam", "postData");
获取引用到内部postData
对象postData
的{{1}}属性。因此,不需要使用p.postData
来修改数据。要删除之前由
setGridParam
属性
Filters
你可以使用
$("#jqGrid").jqGrid("setGridParam", { postData: { Filters: filterObject }, page: 1 });