删除 jqGrid Post 数据中的 JSON 对象

Remove JSON Object in jqGrid Post Data

我有一个带有过滤器的网页,带有两个按钮,可以为 jqGrid 加载数据。

当用户点击 'Filter' 时,我生成了 postData json 对象并将其发送到服务器。没问题。

但是当用户点击 'Clear' 时,我想清除过滤器并从 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' 按钮时发送到服务器的对象。

我想知道如何在单击 'Clear' 时删除 Filters { } 对象。或者如果有更好的方法来实现我想要的,你能建议一下吗?

如果有人想知道,您可以传递 null 来使之前的 JSON 对象无效。完整代码在这里。

$("#jqGrid").jqGrid().setGridParam({ postData: { Filters: null}, page: 1 }).trigger("reloadGrid");

如果您了解 jqGrid 将所有参数保存在一个内部对象中,这将很容易做到。你可以使用

var p = $("#jqGrid").jqGrid("getGridParam");

获取jqGrid的所有选项。您可以直接在对象中修改属性。 postData 可通过 p.postData 访问。如果你只需要修改 postData 你可以使用

var postData = $("#jqGrid").jqGrid("getGridParam", "postData");

获取内部postData对象(p.postData)对postData属性的引用。因此,您 不需要使用 setGridParam 来修改数据。要删除 Filters 属性 你之前设置的

$("#jqGrid").jqGrid("setGridParam", { postData: { Filters: filterObject }, page: 1 });

你可以使用

var postData = $("#jqGrid").jqGrid("getGridParam", "postData");
delete postData.Filters;