jQgrid“loadComplete”事件仅在第一次加载时才被调用

Posted

技术标签:

【中文标题】jQgrid“loadComplete”事件仅在第一次加载时才被调用【英文标题】:jQgrid "loadComplete" event is not being called ONLY on first load 【发布时间】:2020-09-04 17:51:16 【问题描述】:

我的问题如下,我在按下按钮时加载了一个 jQgrid。当网格第一次加载时,它不会调用loadComplete 函数,在这种情况下会调用modifEmitidoRecibidoPorEstado()

网格现在正在做的是正常加载但它不显示任何记录,这并不意味着它是空的,它只是不显示记录。

然后,当我手动更改显示的记录数量(在网格寻呼机中)或更改网格页面时,网格重新加载显示它应该显示的记录,并调用loadComplete 事件。当我执行$('#listaCheques').trigger('reloadGrid'); 时,网格也会正确加载,问题是我只能手动执行此操作(例如通过按下按钮),因为我首先必须等待网格完成加载。

我需要的是第一次正确加载网格,这包括调用loadComplete 事件。

网格完成加载大约需要 2 到 10 秒这一事实可能很重要,它必须等待接收所有数据。

网格创建和加载函数:

   //first time the function is called first == true
   if (first==false)
        jQuery('#listaCheques').jqGrid('clearGridData');
        $("#listaCheques").jqGrid('setPostData',datosConsulta); 
        $("#listaCheques").trigger("reloadGrid");
    else
        first=false;
        $("#listaCheques").GridUnload();
        jQuery("#listaCheques").jqGrid(
                loadError:  checkErrors,
                mtype : 'POST',
                url:path+'/something.do?reqCode=load',
                datatype: 'json',
                postData:datosConsulta,
                colNames:[//not relevant],
                colModel:[//not relevant],
               beforeSelectRow: function(rowid, e) //remove yellow highlight
                    return false;
                ,
               rowNum: JQGRID_PARAMETERS.rowNum,
               rowList: JQGRID_PARAMETERS.rowList,
               pager: '#pagerCheques',
               sortname: 'chequeNumero',
               viewrecords: true,
               emptyrecords:'message',
               sortorder: "asc",
               loadComplete:modifEmitidoRecibidoPorEstado,
               gridComplete:gridFixIExplorer,
               jsonReader : 
                    root: "response.rows",
                    page: "response.page",
                    total: "response.total",
                    records: "response.records",
                    repeatitems: false
                ,     
                width:'100%',
                height: '100%'
   );
                    

【问题讨论】:

【参考方案1】:

使用哪个版本的jqGrid?好像很老了。

表达式 $("#listaCheques").GridUnload(); 表示 jqGrid 已经创建,我不确定是否正确调用它。

我建议你删除这行代码并测试。

【讨论】:

你说得对,我知道代码没用,但由于这是一个非常古老且庞大的银行系统,我宁愿保留它现在的样子,但是我测试了删除它并且问题保持不变.使用的 jqgrid 版本是 3.8.1。我就这个错误联系了我的队友,它似乎只在我的计算机上本地发生。

以上是关于jQgrid“loadComplete”事件仅在第一次加载时才被调用的主要内容,如果未能解决你的问题,请参考以下文章

jqGrid 的 loadComplete 和 onSelectRow 的 pre 和 post 方法调用如何通用?

jqGrid设置符合条件的行选中

如何在jQGrid行中禁用超链接

jqgrid学习

Jqgride关于获取完数据可直接编辑

loadComplete 和 gridComplete 事件有啥区别?