Jqgrid使用reloadGrid無法刷新數據
問題描述:
使用Jqgrid做的表格,點擊表格中的詳細連接,彈出一個頁面后.再次查詢數據,發現Jqgrid就不能正常加載數據.
解決方法步驟:
去了官網查看是不是配置有問題,
調整代碼
以下代碼是調整后的代碼,注釋部分是原代碼,使用的是reloadGrid方法重新加載數據.
//點擊按鈕讀取數據
function readData() {
var Model = $("#ddlModel").val();
var Line = $("#txtLine").val();
var AlarmType = $("#ddlAlarm").val();
loadGrid(getIframWidthAndHeigh());
$.blockUI(); //如果刷新不觸發此事件,重新調用一次
//var records = $('#list').jqGrid("getGridParam", 'records');
//if (records != null) {
// //loadGrid(getIframWidthAndHeigh());
// //重新载入
// $("#list").jqGrid('setGridParam', {
// datatype: 'json',
// mType: "POST",
// postData: { Model: Model, Line: Line, AlarmType: AlarmType }, //发送数据
// page: 1
// }).trigger("reloadGrid");
// $.blockUI(); //如果刷新不觸發此事件,重新調用一次
//}
//else {
// loadGrid(getIframWidthAndHeigh());
//}
}
使用reloadGrid無法刷新頁面后,看到了這篇文章,就考慮按上面的說法重構Jqgrid的方法.在重構方法裡面加上
$(‘#list’).jqGrid(‘GridUnload’);
這一段代碼,可以很好的解決Jqgrid無法刷新數據的問題.
http://www.w3dev.cn/article/20130922/jqGrid-execute-twice-does-not-take-effect.aspx
一下是重構的代碼片段
//加載Grid
var loadGrid = function (size) {
var Model = $("#ddlModel").val();
var Line = $("#txtLine").val();
var AlarmType = $("#ddlAlarm").val();
$('#list').jqGrid('GridUnload');
$('#list').jqGrid({
url: '../Ajax/PageWIP/WIPGroupAlerm.ashx',
datatype: 'json', //設置為Local不加載數據
mType: "POST",
postData: { Model: Model, Line: Line, AlarmType: AlarmType },
autowidth: true,
height: size.height - 40, //size.height,
shrinkToFit: false, //此屬性可以設置列寬度,不然不會生效- 230
// width: size.width,