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;
}