jqgrid4--inline模式,如何根据服务器返回值判定数据是否保存

llpyemao 2012-07-28 11:55:03
请问 : jqgrid4--inline模式,如何根据服务器返回值判定数据是否保存,如果服务器保存数据失败,如何在客户端显示给出服务器端传送过来的错误消息(用一个变量表示),并阻止客户端保存.需要改变jqgrid哪个事件的响应函数?
谢谢!

客户端代码如下: 目前可以传送数据到服务器端,服务器端返回{"message":"存在重复数据,增加数据失败!","new_id":-1,"success":false},但不知道客户端如何处理,客户端应该接受什么样的数据呢?

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
<link
href="/education2/jqGrid4.4/themes/redmond/jquery-ui-1.8.2.custom.css"
rel="Stylesheet" />
<link href="/education2/jqGrid4.4/themes/ui.jqgrid.css" rel="Stylesheet" />
<script src="/education2/jqGrid4.4/js/jquery-1.7.2.js"
type="text/javascript"></script>
<script type="text/javascript"
src="/education2/jqGrid4.4/js/jquery-ui-1.8.2.custom.min.js"></script>
<script type="text/javascript"
src="/education2/jqGrid4.4/js/i18n/grid.locale-cn.js"></script>

<script src="/education2/jqGrid4.4/js/jquery.jqGrid.src.js"
type="text/javascript"></script>

<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#gridTable").jqGrid({
url : '/education2/json/searchTeacher',
mtype : "GET",
datatype : "json",
colNames : [ 'Id', '姓名', '职称', '院系', '教研室', '学历', '出生年月' ],
colModel : [ {
name : 'teacherId',
index : 'teacherId',
width : 55,
hidden : true,
hidedlg : true,//form中不出现
key : true

}, {
name : 'teacherName',
index : 'teacherName',
width : 90,
editable : true
}, {
name : 'teacherTitle',
index : 'teacherTitle',
width : 100,
editable : true,
edittype : 'select',
editoptions : {
value : '讲师:讲师; 副教授:副教授; 教授:教授'
}
}, {
name : 'teacherDepartment',
index : 'teacherDepartment',
width : 80,
align : "right",
edittype:'select',
editoptions:{dataUrl : "/education2/json/departmentTeacher"},
editable : true
}, {
name : 'teacherSection',
index : 'teacherSection',
width : 80,
align : "right",
editable : true
}, {
name : 'teacherEducation',
index : 'teacherEducation',
width : 80,
align : "right",
editable : true
}, {
name : 'teacherBirthday',
index : 'teacherBirthday',
width : 150,
sortable : false,
editable : true
} ],
jsonReader : {
root : "gridModel",
records : "record",
repeatitems : false
},
prmNames : {
search : "search",
id : "id" /////////inline模式 id不能等于表字段名,否则增加记录出错
},
// jqGridInlineAfterSaveRow : function(rowid, resp, tmp, o) {
// },
rowNum : 10,
rowList : [ 10, 20, 30 ],
// multiselect : true,
// multiboxonly : true,
pager : jQuery('#gridPager'),
sortname : 'teacherId',
viewrecords : true,
sortorder : "desc",
editurl : "/education2/json/editTeacher",
caption : "教师"
});
jQuery("#gridTable").jqGrid('navGrid', "#gridPager", {
edit : false,
add : false,
del : false
}, {}, {}, {},{
caption : "查找",
Find : "开始查找",
closeAfterSearch : true
});
jQuery("#gridTable").jqGrid('inlineNav', "#gridPager");

});
</script>
</head>
<body>
<table id="gridTable"></table>
<div id="gridPager"></div>
<br />

</body>
</html>
...全文
502 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
csyyses 2013-08-20
  • 打赏
  • 举报
回复
设置参数restoreAfterError为false,注册事件successfunc返回fasle,信息 addRowParams: { successfunc: function() { return [false, "12"]; }, extraparam: { ID: 0, oid: orderModel.ID() }, restoreAfterError:false } 在gird注册事件 .bind('jqGridInlineErrorSaveRow', function(parameters) { alert("我靠"); return false; })
css453695540 2012-10-25
  • 打赏
  • 举报
回复
我有个问题,修改数据的时候,利用aftersavefunc报出错误消息后,怎么能使保存按钮和取消按钮变得可用呢?现状是编辑按钮可用,保存按钮和取消按钮不可用。还有就是,利用aftersavefunc报出错误消息后,如果点击的其他行,编辑状态解除了,可是编辑项目没有恢复到修改前的状态,怎么解决了?
css453695540 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
update中说到的,从server返回来后,ID列的确是会显示成new_row(或者其它预设的值,如果在editRow的extraparam中,设置了ID列传给后台的函数或变量,则显示函数或……
[/Quote]

在不刷新的前提下,如何重新设置new_row这个列的ID。
llpyemao 2012-08-16
  • 打赏
  • 举报
回复
我目前的解决办法和你的思路完全一样.没问题了!

gulingeagle 2012-08-16
  • 打赏
  • 举报
回复
你看到的stackflow上边的例子是把返回处理写在successfunc中,我试过写在那,没反应,不执行这个函数,不知为何,不知server要返回什么才能触发。只能写在aftersavefunc。

update中说到的,从server返回来后,ID列的确是会显示成new_row(或者其它预设的值,如果在editRow的extraparam中,设置了ID列传给后台的函数或变量,则显示函数或变量名,可能是个bug),所以我现在是手动重新设置new_row这个ID列。

不过,你现在还什么没解决吗?
llpyemao 2012-08-15
  • 打赏
  • 举报
回复
谢谢,我在stackflow站点上找到了和你类似的答案,谢谢!

请看这个 http://stackoverflow.com/questions/11846205/why-is-an-inline-edit-adding-a-new-row 其中update问题还没有解决,gulingeagle 碰到过吗?
gulingeagle 2012-08-14
  • 打赏
  • 举报
回复
楼主也碰到了这个问题?网上似乎到处都没有直接的答案,而jqgrid的文档不太完善,我也是靠自己摸索得来的,有些问题也还没有找到解决方案,我也一直没空写些学习笔记分享下,在这扼要说下你这问题的解决方案,希望能帮到后来者:

1,editurl 对应的后台须返回一个Json:

public JsonResult editTeacher(Teacher _Teacher)
{
JsonResult rst = new JsonResult();
try
{
//保存_Teacher
//成功
rst.Data = new { success = true };
return rst;
}
catch (Exception e)//失败
{
rst.Data = new { success = false, error = e.Message };
return rst;
}
}


2,前台接收:

jQuery("#grid").jqGrid('inlineNav',"#gridpager",{
editParams:{
aftersavefunc: function( rowid, response ){
var result = eval('(' + response.responseText + ')');

if (result.success == false) {
alert('保存失败!'+result.error);
} else {
alert('保存成功!');
}

return true;
}
}
});
llpyemao 2012-08-02
  • 打赏
  • 举报
回复
谢谢,这个似乎太宽泛了.
wheat__ 2012-08-01
  • 打赏
  • 举报
回复
http://rautinee.iteye.com/blog/660000
看看這篇,也許可以幫到你。
llpyemao 2012-07-28
  • 打赏
  • 举报
回复
现有一个不成熟方案:

	var openDialog4Adding = function() {
var selrow = jQuery("#gridTable").getGridParam('selrow');
saveparameters = {
"successfunc" : succesfunc,
"url" : "/education2/json/editTeacher",
"extraparam" : {},
"aftersavefunc" : null,
"errorfunc" : null,
"afterrestorefunc" : null,
"restoreAfterError" : true,
"mtype" : "POST"
}
jQuery("#gridTable").jqGrid('saveRow', selrow, saveparameters);
};


var succesfunc = function(response) {
var result = eval('(' + response.responseText + ')');
if (result.success == true) {
alert("保存成功!");
return true;
} else {
alert("保存失败!");
return false;
}
};



但这是用一个新按钮,如何让jqgrid自带的save按钮执行 succesfunc 函数中的内容呢?

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧