在edit.js文件中,对数据列开启编辑状态,提交时关闭编辑状态,并验证所填数据是否正确。
$(function() {
examplegrid = $("#grid").datagrid({
url : 'data/detailData.do',
showFooter : true,
border : false,
fit : true,
fitColumns : false,
nowrap : true,
rownumbers : true,
singleSelect : false,
frozenColumns : [ [ {
field : "ck",
width : 50,
checkbox : true
}, {
title : "操作",
field : "action",
width : 80,
halign : "center",
align : "center",
formatter : formatAction
} ] ],
columns : [ [ {
title : "姓名",
field : "name",
width : 110,
halign : "center",
align : "center",
sortable : true,
editor : {
type : 'text'
}
}, {
title : "年龄",
field : "age",
width : 110,
halign : "center",
align : "center",
sortable : true,
editor : {
type : 'text'
}
} ] ],
onBeforeEdit : function(index, row) {
row.editing = true;// 标识是否编辑
examplegrid.datagrid('refreshRow', index);// 将上面的标识写入行数据中
},
onAfterEdit : function(index, row) {
row.editing = false;
examplegrid.datagrid('refreshRow', index);
},
onCancelEdit : function(index, row) {
row.editing = false;
examplegrid.datagrid('refreshRow', index);
},
onClickRow : function(rowIndex, rowData) {
editrow_Index(rowIndex);
}
});
$('#form').form({
url : 'data/detailadd.do',
onSubmit : function() {
parent.$.messager.progress({
title : '提示',
text : '数据处理中,请稍后....'
});
var isValid = $('#form').form('validate');
if (!isValid) {
parent.$.messager.progress('close');
return false;
}
var rows = xbticketgrid.datagrid('getRows');
if (rows && rows.length > 0) {
var gridValid = ticketendEdit();// // 退出编辑并验证必填信息是否填写
if (gridValid != 0) {
parent.$.messager.progress('close');
parent.$.messager.alert('错误', "第" + gridValid + "行的填写不正确");
beginEdit();
return false;
}
return true;
} else {
parent.$.messager.progress('close');
parent.$.messager.alert('错误', "请先添加个人信息后再保存");
return false;
}
},
success : function(result) {
parent.$.messager.progress('close');
try {
data = eval("(" + result + ")");// 将JSON字符串转换成对象
if (data && data.success) {
if (data.msg && data.msg != "")
parent.$.messager.alert('提示', data.msg);
else
parent.$.messager.alert('提示', "添加成功");
parent.$.modalDialog.openner_grid.datagrid('reload');// 刷新Gird数据
parent.$.modalDialog.handler.dialog('close');// 关闭当前模式窗口
} else
parent.$.messager.alert('错误', data.msg);// 操作失败
} catch (e) {
}
}
});
});
// 操作列格式化
function formatAction(value, row, index) {
if (row.editing) {
var s = '<a href="javascript:void(0);" onclick="saverow(this)">确认</a> ';
var c = '<a href="javascript:void(0);" onclick="cancelrow(this)">取消</a>';
return s + c;
} else {
var e = '<a href="javascript:void(0);" onclick="editrow(this)">修改</a> ';
return e;
}
}
// 编辑单行
function editrow(target) {
var index = getRowIndex(target);
examplegrid.datagrid('beginEdit', index);
}
// 编辑单行
function editrow_Index(index) {
examplegrid.datagrid('beginEdit', index);
editIndex_invit = index;
}
// 保存单行
function saverow(target) {
var index = getRowIndex(target);
examplegrid.datagrid('endEdit', index);
}
// 取消编辑
function cancelrow(target) {
var index = getRowIndex(target);
examplegrid.datagrid('cancelEdit', index);
}
// 从tr上获取行号
function getRowIndex(target) {
var tr = $(target).closest('tr.datagrid-row');
return parseInt(tr.attr('datagrid-row-index'));
}
// 先验证编辑行中的数据,无错误后,退出所有的编辑模式
function ticketendEdit() {
var validate = 0;// 记录没有填写数量的行
var rows = xbticketgrid.datagrid('getRows');
try {
for ( var i = 0; i < rows.length; i++) {
if (xbticketgrid.datagrid('validateRow', i)) {
xbticketgrid.datagrid('endEdit', i);
} else {
validate = i + 1;// 行号
}
}
} catch (e) {
}
return validate;// 返回false表示有错误无法退出编辑模式
}
// 开启编辑
function beginEdit() {
var rows = examplegrid.datagrid('getRows');
try {
for ( var i = 0; i < rows.length; i++) {
examplegrid.datagrid('beginEdit', i);
}
} catch (e) {
}
}