Jquery 用新数据重新加载jqGrid
我有一个简单的函数Jquery 用新数据重新加载jqGrid,jquery,jqgrid,Jquery,Jqgrid,我有一个简单的函数 function createGrid(limit){ $("#list").trigger("reloadGrid"); $("#list").jqGrid({ url:indexObj.gridUrl, postData:{ "limit":limit }, datatype: "json", colNames:['ID','type','folder
function createGrid(limit){
$("#list").trigger("reloadGrid");
$("#list").jqGrid({
url:indexObj.gridUrl,
postData:{
"limit":limit
},
datatype: "json",
colNames:['ID','type','folder','Description'],
colModel:[
{name:'id',index:'id', width:50},
{name:'type',index:'type', width:100},
{name:'folder_id',index:'folder_id', width:100},
{name:'description',index:'description', width:200}
]
});
}
我首先用limit=1调用它,它调用服务器并返回正确的数据。
然后我用limit=2调用它,它只是重新运行上一个ajax调用(limit=1),当然返回相同的数据
为什么postData实际上没有改变?我在fireBug中看到“limit”的值是正确的。我不确定这种缓存数据的构造是否良好,但您当前的问题是清楚的 重要的是要明白,电话
$("#list").jqGrid({
url:indexObj.gridUrl,
...
});
创建网格。它在非常复杂的div和表结构中转换空的
。因此,只能创建一次网格
网格由许多部分组成(如标题),这些部分不需要在下一次填充网格时重新创建。因此jqGrid提供了reloadGrid
事件,可以触发该事件来重新填充网格体。如果jqGrid有postData
,具有如下值
postData: {
limit: limitVar
}
然后,if表示将创建postData
的对象值,并使用limitVar
变量的当前值初始化。如果您有外部变量(全局,或在某些外部范围中定义),则可以使用
postData: {
limit: function () { return limitVar; }
}
在这种情况下,您将使用limitVar
的当前值作为URL的limit
参数的值。顺便说一下,如果用户只需单击列标题,网格需要排序,jqGrid将向url
发出新的HTTP请求。如果在postData
中使用函数
,则在这种情况下,当前值也将为limitVar
如果对现有代码的修改较少,则可以替换行$(“#list”).trigger(“reloadGrid”)代码>(在当前代码中绝对不需要)以
它将破坏先前创建的潜水和表格结构(构建网格),并在同一位置创建一个空的
。因此,您可以重新创建网格。此类代码的工作效率不高,但在某些情况下(例如,请参见和)。或者在重新加载时,可以使用setGridParam
重置postData
$("#list").jqGrid('setGridParam', {
postData: {"limit":limit }
}).trigger('reloadGrid');
而且,您不需要重新初始化/创建jqGrid,但只需使用:
function createGrid(limit){
$("#list").trigger("reloadGrid");
#Code Goes here#
}
奇怪的是,我在$(“#list”).jqGrid(“GridUnload”)@CoffeeCode:您应该验证加载的jqGrid。可能您使用了来自的自定义下载,但没有包含自定义模块(请参阅)?我建议您只包含jquery.jqGrid.src.js
。您可以在任何文本编辑器中打开该文件并搜索GridUnload
。
function createGrid(limit){
$("#list").trigger("reloadGrid");
#Code Goes here#
}