调用 saveRow 的时候,发现 后台保存成功了, 可是 前端 的 grid 没有把保存的内容给 刷新。 原来有回调的 方法的:
//第四步:定义保存操作,通过键值对把编辑的数据传到后台,如下
//{upperLimit: value1,lowerLimit:value2}
function saveParam(rowId) {
var parameter = {
url : "sensor/setParam", //代替jqgrid中的editurl
mtype : "POST",
extraparam : { // 额外 提交到后台的数据
"param1" : "1",
"param2" : "2"
},
successfunc : function(XHR) { //在成功请求后触发;事件参数为XHR对象,需要返回true/false;
alert(XHR.responseText);//接收后台返回的数据
if (XHR.responseText == "false") {
alert("上限值不能小于下限值");
return false; //返回false会使用修改前的数据填充,同时关闭编辑模式。
} else {
alert("编辑成功");
return true; //返回true会使用修改后的数据填充当前行,同时关闭编辑模式。
}
}//end successfunc
}//end paramenter
jQuery('#list').saveRow(rowId, parameter);
}
同时 我在使用的时候 , 发现 需要 额外 将 extraparam : // 额外 提交到后台的数据 这里 填写入。 如果不填的话。 前端并没有获取到 数据的。 特别是 后台 Java spirngmvc 使用 一个 实体接受的时候。 同时 jqgrid 某些 列,往往我们 都使用了 格式化了,估计传递到了 后台就 没有 获取到 对应该的 一些列的内容。因此 需要自己 手写入 额外的参数了。 就是 这里的参数 名称 和 原来 grid 列的名称 有相同, 也是会覆盖 原来的。 下面是我的使用 代码:
var savePostUrl = _ctxPath + "/pfmcePlan/hrEffPfmcePscore/pscore/save.do";
var extraparam = { mypsid: mypsid, title: title, type: type, hrEffPfmcePlaneecptId: hepPlaneecptid };
jQuery(grid_selector).jqGrid('saveRow', editRowid, saveCallbackGrid, savePostUrl, extraparam);
console.log('5555>>>>>>>>>');
// 表格行 保存,回调
function saveCallbackGrid(data) {
var result;
if (data.responseText) {
var resultString = data.responseText;
console.log('>>>>>>>>>' + resultString);
//string 转json
try {
result = JSON.parse(resultString);
} catch (e) {// 必须捕获异常,否则会报错的
}
console.log(result + '###>>>>>>>>>' + result.success);
if (result.success) {
showNotice(result.message);
return true;// 覆盖 原来表格的内容,
} else {
showError(result.message);
return false;
}
} else {
showError("保存失败");
return false;
}
}