一旦表变空,jQGrid重新加载不起作用

时间:2013-05-31 19:12:40

标签: javascript jquery jqgrid

我遇到了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"
        })

我在顶部有一个选择框,根据从dropbox中选择的值重新加载此表,我已将重新加载绑定到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");
    }

这样可以正常工作,直到我选择一个数据可用的选项。但是,一旦我选择了一个没有任何数据的选项,表格就会变空,即使我更改了选择,表格仍然为空。

我通过firebug检查了没有JS错误,重新加载正在对服务器进行正确的调用,服务器正在返回数据。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

首先,我认为您应该更好地使用postData并将propertySystemName定义为函数:

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

(有关详细信息,请参阅答案)。之后,您无需在propertySystemName内(或change内)重置gridReload

您可以尝试做的是以下

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