1、Controller:
/**
* 保存新增/更新的行数据
* @param expense
* @return
*/
@RequestMapping(params = "saveRows")
@ResponseBody
public AjaxJson saveRows(JhUserExpensePage page){
String message = null;
List<JhUserExpenseEntity> expense=page.getExpense();
AjaxJson j = new AjaxJson();
if(CollectionUtils.isNotEmpty(expense)){
for(JhUserExpenseEntity expenseData:expense){
if (StringUtil.isNotEmpty(expenseData.getId())) {
JhUserExpenseEntity t = jhUserExpenseService.get(JhUserExpenseEntity.class, expenseData.getId());
try {
message = "费用: " + expenseData.getUserId() + "被更新成功";
MyBeanUtils.copyBeanNotNull2Bean(expenseData, t);
jhUserExpenseService.saveOrUpdate(t);
systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
} catch (Exception e) {
message = "费用: " + expenseData.getUserId() + "被更新失败";
e.printStackTrace();
}
}
}
}
return j;
}
2、新建一个Page类:
public class JhUserExpensePage {
private List<JhUserExpenseEntity> expense;
public List<JhUserExpenseEntity> getExpense() {
return expense;
}
public void setExpense(List<JhUserExpenseEntity> expense) {
this.expense = expense;
}
}
3、页面文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/context/mytags.jsp"%>
<t:base type="jquery-webos,easyui,tools,DatePicker,autocomplete"></t:base>
<div class="easyui-layout" fit="true">
<div region="center" style="padding:0px;border:0px">
<t:datagrid name="jhUserExpenseList" checkbox="true" pagination="true" fitColumns="true"
title="费用管理" actionUrl="jhUserExpenseController.do?datagrid&userid=${userid}" idField="id" queryMode="group">
<t:dgCol title="主键" field="id" hidden="true" queryMode="single" width="120"></t:dgCol>
<t:dgCol title="费用类别" field="expType" query="true" queryMode="single" extendParams="editor:'combobox'" dictionary="cost_type" width="100"></t:dgCol>
<t:dgCol title="费用日期" field="expDate" formatter="yyyy-MM-dd" query="true" extendParams="editor:'datebox'" queryMode="group" width="120"></t:dgCol>
<t:dgCol title="经手人" field="expAdmin" queryMode="single" extendParams="editor:'text'" width="100"></t:dgCol>
<t:dgToolBar title="编辑" icon="icon-edit" funname="editRow"></t:dgToolBar>
<t:dgToolBar title="保存" icon="icon-save" url="jhUserExpenseController.do?saveRows" funname="saveData"></t:dgToolBar>
<t:dgToolBar title="取消编辑" icon="icon-undo" funname="reject"></t:dgToolBar>
</t:datagrid>
</div>
</div>
<script type="text/javascript">
//添加行
function addRow(title,addurl,gname){
$('#'+gname).datagrid('appendRow',{});
var editIndex = $('#'+gname).datagrid('getRows').length-1;
$('#'+gname).datagrid('selectRow', editIndex)
.datagrid('beginEdit', editIndex);
}
//保存数据
function saveData(title,addurl,gname){
if(!endEdit(gname))
return false;
var rows=$('#'+gname).datagrid("getChanges","inserted");
var uprows=$('#'+gname).datagrid("getChanges","updated");
rows=rows.concat(uprows);
if(rows.length<=0){
tip("没有需要保存的数据!")
return false;
}
var result={};
for(var i=0;i<rows.length;i++){
for(var d in rows[i]){
result["expense["+i+"]."+d]=rows[i][d];
}
}
$.ajax({
url:"<%=basePath%>/"+addurl,
type:"post",
data:result,
dataType:"json",
success:function(data){
tip(data.msg);
if(data.success){
reloadTable();
}
}
})
}
//结束编辑
function endEdit(gname){
var editIndex = $('#'+gname).datagrid('getRows').length-1;
for(var i=0;i<=editIndex;i++){
if($('#'+gname).datagrid('validateRow', i)){
$('#'+gname).datagrid('endEdit', i);
}else{
tip("请选择必填项(带有红色三角形状的字段)!");
return false;
}
}
return true;
}
//编辑行
function editRow(title,addurl,gname){
var rows=$('#'+gname).datagrid("getChecked");
console.log("这儿输出了选择的行:"+rows);
if(rows.length==0){
tip("请选择条目");
return false;
}
for(var i=0;i<rows.length;i++){
var index= $('#'+gname).datagrid('getRowIndex', rows[i]);
console.log("这儿输出index:"+index);
$('#'+gname).datagrid('beginEdit', index);
}
}
//取消编辑
function reject(title,addurl,gname){
$('#'+gname).datagrid('clearChecked');
$('#'+gname).datagrid('rejectChanges');
}
</script>