请问 : 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>
谢谢!客户端代码如下: 目前可以传送数据到服务器端,服务器端返回{"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>
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 函数中的内容呢?
看看這篇,也許可以幫到你。
{
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;
}
}
});
在不刷新的前提下,如何重新设置new_row这个列的ID。
addRowParams: {
successfunc: function() {
return [false, "12"];
},
extraparam: { ID: 0, oid: orderModel.ID() },
restoreAfterError:false
}
在gird注册事件
.bind('jqGridInlineErrorSaveRow', function(parameters) {
alert("我靠");
return false;
})