2013-05-31 22 views
4

我有一个jqGrid relaod的问题。jQGrid刷新无法工作,一旦表变空

因此,这里是我。

当我的页面加载我建一个表

$("#systemPropList").jqGrid(
     { 
      url : '${servletPath}/systemProperties.data', 
      colNames:['Key Name','Key Value','Description','System Name','Work'], 
      colModel : [ 
       {name:'propertyKey',index:'propertyKey', width:155, align:'center'}, 
       {name:'propertyValue',index:'propertyValue', width:100, align:'center'}, 
       {name:'propertyDescription',index:'propertyDescription'}, 
       {name:'propertySystemName',index:'propertySystemName', width:100, align:'center'}, 
       {name:'propertyId', sortable:false, width:60, align:'center', formatter:workButtons } 
      ], 
      sortname: 'propertyKey', 
      sortorder: "desc" 
     }) 

我对顶部的选择框重新加载基于来自收件箱中选择的值这个表,我已经绑定重装到的onChange。

$("select[name=systemName]").change(function(obj){ 
      gridReload(); 
}); 

    function gridReload(){ 
    $("#systemPropList").setGridParam({"page": 1}); 
    $("#systemPropList").jqGrid("setGridParam",{postData:{propertySystemName :  $("#systemName option:selected").val()}}).trigger("reloadGrid"); 
    } 

这工作得很好,直到我选择它的数据是可用的。但是,一旦我选择了不具有任何数据的选项一个选项,该表为空,并表后,即使我改变保持为空选择。

我通过萤火虫检查没有JS错误,并重新加载正在为服务器的正确调用,服务器返回的数据。

我错过了什么?

+0

为什么你有两个setGridParam电话吗?把它变成一个,看看是否解决了这个问题。将'{“页面”:1}'移到第二行 – RRK

回答

2

首先,我认为你应该更好地利用postData定义为功能propertySystemName

postData: { 
    propertySystemName: function() { 
     return $("#systemName option:selected").val(); 
    } 
} 

(详见答案)。之后,您不需要重置change(或gridReload内部)中的propertySystemName

什么,你可以尝试做如下

function gridReload() { 
    $("#systemPropList").jqGrid("setGridParam", {lastpage: 1}) 
     .trigger("reloadGrid", [page: 1]); 
} 
+0

谢谢,我想出了这个问题。这是因为一些工程师已经重写了jqGrid来显示自定义消息,以防错误和没有数据,同时他们删除了jqGrid的第一行,并用错误消息的DIV代替它。所以我只是在另一个TR中添加了相同的DIV而不是替换第一行。 – NullPointerException