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