jqGrid方法再次执行无效无法刷新数据
今天在csdn看到一个使用jqGrid构造方法执行刷新jqGrid表格操作的问题,将jqGrid构造写成一个函数,然后重复调用这个函数重构jqGrid来实现刷新,但是没有效果。
其实jqGrid提供了刷新的功能
$('#gridi').trigger('reloadGrid')
不知道这个童鞋有现成的方法不用,而是需要重构jqGrid,这样效率那么低,需要重新生成jqGrid的结构,重新绑定事件之类的,并且还没有效果。这个是以为jqGrid加了判断,如果某个DOM对象已经执行过jqGrid的构造,就会直接退出后续代码执行,所以并没有刷新DOM对象的数据,源代码如下
$.fn.jqGrid = function( pin ) {
if (typeof pin == 'string') {
//var fn = $.fn.jqGrid[pin];
var fn = $.jgrid.getAccessor($.fn.jqGrid,pin);
if (!fn) {
throw ("jqGrid - No such method: " + pin);
}
var args = $.makeArray(arguments).slice(1);
return fn.apply(this,args);
}
return this.each( function() {
if(this.grid) {return;}////已经构造过则退出后续代码执行
//........其他jqGrid代码
如果一定要调用jqGrid来实现重绘,需要先调用GridUnload从DOM中销毁指定id的grid对象(清除和这个grid对象有关的html代码和移除所有绑定的事件),table和pager元素没有被删除,可以重新使用。
一般调用GridUnload方法是为了当修改过colModel后使新的colModel生效用的,reloadGrid不会启用新的colModel。
reloadGrid和GridUnload
使用当前配置重新加载jqGrid。如果datatype为xml或者json,将会向服务器发送新请求。这个方法需要在已经调用jqGrid构造过的DOM对象上。注意这个方法不会修改HEADER信息,就是说colModel即使被修改了也不会使用colModel的新配置,需要使用GridUnload重新加载不同的(修改过的)colModel。此方法仅在jqGrid配置loadonce: false 时有效。
所以如果需要使用jqGrid方法重新构造jqGrid结构,需要先GridUnload卸载原来的jqGrid
function createJQGrid(){
$('#gridid').jqGrid('GridUnload');
$('#gridid').jqGrid({/*配置....*/})
}
加支付宝好友偷能量挖...

原创文章,转载请注明出处:jqGrid方法再次执行无效无法刷新数据
