JqGrid如果是发送ajax请求,是阻塞式的,我们可以先将grid渲染出来,然后在里面添加数据,通过异步加载的方式,来渲染grid,主要用到的函数
$("#gridKeiTouData")[0].addJSONData(jsonData);
,设定在loadComplete 事件里面,设定数据。
例子
下面就是一个grid,异步加载数据,先渲染,后设定数据
$("#gbox_gridKeiTouData").remove();
$("#wfgm1080KeiTouData").append("<table id='gridKeiTouData'></table>");
$('#gridKeiTouData').jqGrid({
data: dataList,
datatype:"local",
multiboxonly:true,
cellEdit:false,
cellsubmit:'clientArray',
colNames:colNames,
colModel:colModel,
width:gridWidth,
height:gridHeight,
scrollOffset:0,
rowNum:dataList.length,
gridview: true,
regional:'ja',
beforeSelectRow: function(rowid, event){
},loadComplete(xhr){
//表格渲染出来后,在设定数据
var jsonData = getGridData();
$("#gridKeiTouData")[0].addJSONData(jsonData);
}
});
//--------------------------------------------------------------------------------------
//数据获取
//--------------------------------------------------------------------------------------
function getGridData(){
var url = "/test//getGrid.do";
var data = [];
var ajaxParam ={
"value(No)" : $("#No").val()
};
$.ajaxSettings.async = false;
$.getJSON(
url,
ajaxParam,
function(result,e) {
if(result.error){
sofia.ui.showDialogJsMsg(result.type, result.text);
}else{
data = result.resultList;
}
});
return data;
}