如何在免费的 jqgrid 4.15.4 中重新加载数据

How to reload data in free jqgrid 4.15.4

我有一个关于免费 jqgrid 的问题。我的 jqgrid 可以正常加载所有数据。我已经明确给出了一个下拉菜单和搜索按钮。当我尝试通过选择下拉菜单并单击搜索按钮进行搜索时,新数据未加载到现有网格中。

这是我的fiddle:https://jsfiddle.net/x3fger4z/

在页面加载时,我正在使用此 url:'/MajorsView/GetAllData',但在单击按钮后我想从另一个 url 加载。

下面是我的搜索按钮,实际上我正在成功获取数据,但它没有反映在网格上:

<input type="button" onclick="return myfunction();" id="btnFlagStatus" value="Search" class="btn btn-primary" />

function myfunction() {
 var gendarVal = $("#gendarFlagsEnum option:selected").text();
        var URL= "/MajorsView/GetFemaleData?searchKey=" + gendarVal;
        $.ajax({
            type: "GET",
            url: URL,
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(gendarVal),
            datatype:"json",
            success: function (data) {
                //$("#grid").setGridParam({ url: URL })
                $("#grid").trigger('reloadGrid');

            },
            error: function () {
                alert("error");
            }
        })
}

我曾尝试从中引用但无济于事

如果您将 datatype: "json" 与某些 url 一起使用,那么您只需将 url 更改为另一个值并触发 reloadGrid。无需手动提出 Ajax 请求。如果你额外使用loadonce: true选项,那么网格的datatype将被更改为"local"以在本地处​​理排序、分页和过滤。每次排序、分页和过滤无非是重新加载具有 datatype: "local" 的网格和另一个参数(如 pagesortnamepostData.filters)。因此,要从服务器 重新加载网格 的数据,必须将 datatype 恢复为初始值(在您的情况下为 "json" )。因此你可以使用

var p = $("#grid").jqGrid("getGridParam"); // get reference to all parameters of jqGrid
p.url = "/MajorsView/GetFemaleData?searchKey=" + encodeURIComponent(gendarVal)
$("#grid").trigger("reloadGrid", { fromServer: true });

或者 ole 可以直接重置 datatype(使用 p.datatype = "json";),但是 fromServer: true 的使用在其他情况下可能会有帮助,并且在我看来它使代码更具可读性。有关更多信息,请参阅 the old answerUPDATED 部分。