使用easyui datagrid时,有一个字段为时间字段(createDate),原生显示为[object object]已通过formattime函数解决:(如下图)
formattime():
但进入行编辑状态时,时间字段又会显示为[object,object],并且转化为json后传给后台无法处理。(如下图)
(图3)
相关代码:
点击行编辑用户按钮和保存相关代码:
//开始行编辑
function updateUser(){ var row = $("#usergrid").datagrid('getSelected'); if (row) { var rowIndex = $("#usergrid").datagrid('getRowIndex', row); $("#usergrid").datagrid('beginEdit', rowIndex); alert(formattime(row.createDate)); } }
//保存
function saveGrid(){ endEdit(); if ($("#usergrid").datagrid('getChanges').length) { var inserted = $("#usergrid").datagrid('getChanges', "inserted"); var deleted = $("#usergrid").datagrid('getChanges', "deleted"); var updated = $("#usergrid").datagrid('getChanges', "updated"); var effectRow = new Object(); if (inserted.length) { effectRow["inserted"] = JSON.stringify(inserted); alert(effectRow["inserted"]); $.post("user_appendUser.action", effectRow, function(rsp) { alert("追加已提交!"); $("#usergrid").datagrid("reload"); }); } if (deleted.length) { effectRow["deleted"] = JSON.stringify(deleted); alert("delete"); } if (updated.length) { effectRow["updated"] = JSON.stringify(updated); alert(effectRow["updated"]); $.post("user_updateUser.action", effectRow, function(rsp) { alert("行编辑已提交!"); $("#usergrid").datagrid("reload"); }); } } }
后台代码:
public void updateUser() throws IOException{ session = baseDao.getSession(); HttpServletRequest request = ServletActionContext.getRequest(); String json = request.getParameter("updated"); List<User> users = jsonToUser(json); if(users!=null && users.size()>0){ for (int k = 0;k < users.size();k++ ){ user = users.get(k); session.update(user); } } baseDao.getTransaction().commit(); } public List<User> jsonToUser(String json) throws IOException{ List<User> users = JSON.parseArray(json,User.class); return users; }
目前有2种思路:
1)时间字段createDate行编辑状态时使用datetimebox控件显示和处理时间,传给后台。
2)时间字段createDate行编辑状态时设置为不可编辑状态,但如图3格式显示原本时间(格式为 2015-05-03 22:00:00),并以时间格式传给后台处理。
求助大家该如何处理,写代码?希望能提供思路和详细完整代码,非常感谢!
目前自己采用后台用sql把datetime转为char,转为hibernate实体,需修改实体类和*.hbm.xml中相应字段类型为string,前台datagrid设置createDate为不可编辑状态解决。