EasyUI Datagrid 設定 url: findOrder() 呼叫 DWR 方法,後端回傳 Result 物件包含 JSON 字串,但 Datagrid 顯示空白。
url 參數期望**直接回傳 JSON 陣列**或 {total: N, rows: [...]} 格式。loadData// 1. 移除 url 參數
$('#dg').datagrid({
// ... 其他屬性
// url: findOrder(), // 刪除此行
});
// 2. 在頁面載入或查詢按鈕點擊時呼叫 DWR
function loadOrders() {
$('#dg').datagrid('loading'); // 顯示載入中
OrderAction.findOrder({callback: function(result) {
$('#dg').datagrid('loaded');
if (result.code === '0000') { // 成功代碼
var jsonData = result.param.jsonStr; // 假設為 {total: 100, rows: [...]}
$('#dg').datagrid('loadData', jsonData); // 關鍵:手動載入
} else {
$.messager.alert('提示', result.msg);
}
}});
}
// 3. 頁面載入時自動查詢
$(function() { loadOrders(); });
@RemoteMethod
public Result findOrder(String params, HttpSession session) {
// ...
Map map = new HashMap<>();
map.put("total", list.size());
map.put("rows", list); // List 會被 DWR 序列化為 JSON 陣列
result.setParam(map);
return result;
}
前端 result.param 即為 {total: N, rows: [...]},直接傳給 loadData。
url:Datagrid 內部發起 HTTP 請求,適用於 REST API。loadData:前端已有資料物件(如 DWR 回調),直接渲染,避免二次請求與格式轉換。