作者:mobiledu2502881853 | 来源:互联网 | 2023-05-23 15:27
我有这个简单的功能
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中看到"限制"确实具有正确的值.
1> Runcorn..:
或者在重装时你可以setGridParam
用来重置postData
,
$("#list").jqGrid('setGridParam', {
postData: {"limit":limit }
}).trigger('reloadGrid');
并且,您不需要重新初始化/创建jqGrid,但您可以简单地使用:
function createGrid(limit){
$("#list").trigger("reloadGrid");
#Code Goes here#
}
2> Oleg..:
我不确定具有这种数据缓存的构造是否良好,但是你当前的问题很明显.
了解电话很重要
$("#list").jqGrid({
url:indexObj.gridUrl,
...
});
创建网格.它
在非常复杂的div和表结构中转换为空.因此,只能创建一次网格.
网格由许多部分(如标题)组成,不需要在下一次填充网格时重新创建.所以jqGrid提供的reloadGrid
事件可以被触发以重新填充网格的主体.如果jqGrid有postData
一些像
postData: {
limit: limitVar
}
然后,如果指的对象值postData
将被创建并初始化一次用的电流值limitVar
可变的.如果您有外部变量(全局,或在某些外部范围中定义),那么您可以使用
postData: {
limit: function () { return limitVar; }
}
在这种情况下,您将获得当前值limitVar
作为limit
URL参数的值.顺便说一下,如果用户只需单击列标题,则需要对网格进行排序,并且jqGrid将向其发出新的HTTP请求url
.如果你function
在里面使用,postData
那么你也会得到当前的值limitVar
.
如果您在现有代码中进行较少的修改,那么您可以将该行$("#list").trigger("reloadGrid");
(在当前代码中绝对不需要)替换为
$("#list").jqGrid("GridUnload");
它将破坏先前创建的潜水和表格(构建网格)的结构,并
在同一个地方创建一个空.所以你可以重新创建网格.这样的代码工作效率不高,但在某些情况下它可能非常有用(例如,参见答案和这个代码).