【发布时间】:2017-04-21 06:36:37
【问题描述】:
我有一个运行良好的主细节 jqGrid。正在根据主网格选定行中的单元格值和对 API 的 ajax 调用(即 datatype: 'json' 和 url: 'http://myServiceurl/rowdata.id')填充详细信息网格。
但是,对于某些主行,为详细行设置了数据,因此加载需要一些时间,并且详细信息网格显示“正在加载...”。这很好,直到用户单击主网格中的不同行,而细节网格仍处于“正在加载...”。这是一个问题,因为我正在详细信息网格的 caption 上加载一些附加信息,而详细信息网格上的数据仍在从前一行加载选择详细信息网格的标题更改以反映当前主网格的选定行,但实际表数据来自主网格中选择的上一行。
主从网格编码如下主网格上的jqgrid 选项-
onSelectRow: function(ids) { //load the detail table tabDiv2
$("#"+divToHide).show(); //show the hidden div for detail grid
var rowdata = jQuery("#"+tabDiv).getRowData(ids);
jQuery("#"+tabDiv2).jqGrid('setGridParam',{url:useruri+"/"+rowdata.dbsid,
datatype: 'json'})
jQuery("#"+tabDiv2).jqGrid('setCaption',"Database Name: "+rowdata.dbname)
.trigger('reloadGrid');
},
我可以想象的一个解决方案是在主网格上使用beforeSelectRow 选项并检查是否仍在加载详细网格-
beforeSelectRow: function(){
//check if detail grid is fully loaded <--
//if fully loaded return true else return false
}
如何检查详细信息网格是否已完全加载?我试过$("#"+tabDiv2)[0].grid,但它总是返回true,因为我认为网格的整个DOM元素在数据被加载到其中之前就被加载了。我曾尝试使用$("#"+tabDiv2).getGridParam("records") 检查记录数,但这可能并不总是有效,因为没有任何行的所选主网格行的详细信息网格是有效的方案,并且将永久禁用主网格上的 rowSelect。我还有什么选择?
【问题讨论】:
标签: javascript jquery jqgrid