4

我在使用 jqGrid relaod 时遇到问题。

所以这就是我所拥有的。

当我的页面加载时,我建立了一个表格

  $("#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");
    }

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

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

我错过了什么?

4

1 回答 1

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]);
}
于 2013-06-02T15:24:09.110 回答