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

时间:2018-07-24 16:12:57

标签: jqgrid free-jqgrid mvcjqgrid

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

这是我的小提琴: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");
            }
        })
}

我尝试从中获取参考,但无济于事

1 个答案:

答案 0 :(得分:1)

如果将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 answer UPDATED 部分。