删除jqGrid后期数据中的JSON对象

时间:2016-04-15 18:10:43

标签: javascript json ajax jqgrid

我有一个带有两个按钮的过滤器的网页,它们加载了jqGrid的数据。

当用户点击'过滤'时,我生成了postData json对象并将其发送到服务器。这很好。

但是当用户点击“清除”时,我想清除过滤器并从jqGrid重新加载所有数据。那就是我被困在哪里。

enter image description here

这就是我的过滤器发布到服务器的方式。 enter image description here

按钮点击的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和在“清除”时发送到服务器的对象。单击按钮。

enter image description here

我想知道如何清除' Clear'点击。或者,如果有更好的方法来实现我想要的,请你建议吗?

2 个答案:

答案 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 });