我遇到了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错误,重新加载正在对服务器进行正确的调用,服务器正在返回数据。
我错过了什么?
答案 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]);
}