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方法再次执行无效无法刷新数据
评论(0)Web开发网
阅读(3105)喜欢(0)不喜欢(0)jqGrid中文API