jqgrid在ajax调用时没有刷新

时间:2015-01-24 08:17:27

标签: javascript jquery jqgrid

刷新jqgrid时遇到问题。 试了很多东西,但仍然没有解决方案。 我想从服务器端获取json数据后刷新网格。 这是我正在做的刷新jqgrid。

$("#searchButton").on("click",function(){
var url = contextPath+"/patient/fetchPatients?firstName="+$("#firstName").val()+"&lastName="+$("#lastName").val()+"&diagnosis="+$("#diagnosis :selected").val();    
jQuery("#searchedPatientGrid").setGridParam({datatype:'json',url:url}).trigger('reloadGrid');
});

这是我的jqgrid配置代码。

jQuery("#searchedPatientGrid").jqGrid({
datatype: "json",
colNames:['id','Firsr Name','Last Name','MObile Number','Action'],
colModel:[
    {name:'id',index:'id', width:100},
    {name:'firstName',index:'firstName', width:100},
    {name:'lastName',index:'lastName', width:100},
    {name:'mobileNumber',index:'mobileNumber', width:100},
    {name:'operationDetails.operationDone',index:'operationDetails.operationDone', width:100}

],
rowNum:10,
rowList:[10,20,30],
pager: '#gridPager',
sortname: 'id',
"width":"900",
"gridview":true,
viewrecords: true,
sortorder: "desc",
loadonce: false,
caption:"Patient Search Result"
});

当我第一次点击按钮时,它会点击服务器并在网格中加载数据,但是当我再次点击搜索按钮时,它不会点击服务器上的数据。我不知道为什么会发生这种情况。即使我在config中提到过,loadOnce:false。如果我点击搜索按钮,它应该点击服务器。

1 个答案:

答案 0 :(得分:0)

我猜,默认情况下,如果您未指定 jqgrid mtype参数,则在向服务器发送请求时会使用 POST ,因此您的网址可以不发送参数。

我认为你可以尝试使用这样的东西:

    $("#searchButton").on("click", function () {
        var url = contextPath + "/patient/fetchPatients";
        var postData =
            {
                firstName: $("#firstName").val(),
                lastName: $("#lastName").val(),
                diagnosis: $("#diagnosis :selected").val()
            }
    });

    $("#searchedPatientGrid").trigger('reloadGrid',
        [
            {
                datatype: 'json',
                url: url,
                postData: postData
            }]);

有关如何使用其他参数重新加载jqgrid的更多信息,请查看@Oleg answer