最近做一些表格一直用到jqGrid,今天遇到一個問題:
1、就是頁面加載的時候數據不顯示,點擊搜索才根據請求從服務器返回並顯示內容。
2、默認不從服務器請求數據(不然在開發者工具下會顯示請求不到數據的報錯)
通常的解決方法就是直接給$("#jqGridTable").jqGrid({})套一個function,但個人感覺這並不是最好的方法。
我建議可以用:
(1). 初始化$("#jqGridTable").jqGrid({})的時候設置datatype: 'local',即:
$("#grid").jqGrid({ url:"http://localhost:8080/xxxx", datatype:"local" });
(2)、當要加載數據的時候把datatype設置為json或者XML:
$("#jqGridTable").jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');
實例:
if(devOnlyId!=""){ $("#gridTable").jqGrid('setGridParam', { datatype:'json', postData: { "queryBean.devOnlyId":devOnlyId }, page: 1 }).trigger('reloadGrid'); }else{ $("#gridTable").jqGrid('setGridParam', { datatype:'json', postData: { "queryBean.devOnlyId":null }, page: 1 }).trigger('reloadGrid'); };
數據只給了rows的數據時,jqGrid加載本地數據:
//執行對象列表
$("#executeObject_table").jqGrid({ dataType:"local", width :450, height : 200, viewrecords: true, multiselect: true, colModel:[ {index:'id',name:'id',hidden:true} ,{index : 'typename',name : 'typename',label : '<s:text name="名稱"/>',align : 'center',width : 200} ,{index : 'typecode',name : 'typecode',label : '<s:text name="類型"/>',align : 'center',width : 200} ] }); var data = JSON.parse($("#executeObject_table_hidden").val()); for(var i=0,len=data.length;i<len;i++){ $("#executeObject_table").jqGrid('addRowData',i+1,data[i]); }
//"[
{"id":"d7915253b9ed41bba420de780d3cd6f0","typecode":"windowsDesktop","typename":"windows桌面終端","remarks":"windows桌面終端"},
{"id":"a4243998b03a43558d5708573f361674","typecode":"windowsCloud","typename":"windows雲桌面","remarks":"windows雲桌面"}
]"