异步保存修改记录
页面数据修改记录保存入库
需求背景:
客户提出对报表填报值进行过的修改信息希望能保存到数据库中,形成记录以备查询操作记录。
原理分析:
填报值 进行 修改时 只需通过异步方式触发 将相关数据保存入库即可。
这里我们可以分别用_bindingEditor(),_cellValueChanged,以及ajax 实现上面的需求。
操作步骤:
第一、 利用光标定位事件 获取 单元格 旧值 赋值给公共变量最终传递给值修改事件(在_cellValueChanged中单元格的值已经发生了改变 无法获取到旧值)。
var tempValue=”";
function _bindingEditor( cell ){
var table = _lookupTable( cell );
if( ! _submitEditor( table ) ) return; //
var editor = _lookupEditor( table, cell );
table.currEditor = editor;
_setEditorStyle(editor,cell );
tempValue+=cell.value+’&’; //旧值通过 公共变量传递到 触发事件中
};
第二、 在 值修改事件中获取旧值 最终异步保存数据
function _cellValueChanged(cell){
var strs= new Array();
strs=tempValue.split(“&”);
var oldValue=strs[strs.length-2];
tempValue=strs[strs.length-1]+’&’;
var newValue=cell.value;
doSave(oldValue,newValue);
}
第三简单ajax 保存数据
function doSave(oldValue,newValue){
$.ajax({
type: “POST”,
url: “save.jsp”,
data: “oldValue=”+oldValue+”&newValue=”+newValue,
success: function(){
alert(“数据已保存!“);
}
});
}
后台业务逻辑由 save.jsp完成。
……
Statement stmt =conn.createStatement();
//要执行的sql语句
String sql = “INSERT INTO updatelog (id,username, oldvalue,newvalue,updatetime) VALUES (‘”+id+”‘,’”+name+”‘,’”+oldValue+”‘,’”+newValue+”‘,’”+date1+”‘) “;
System.out.println(“sql=”+sql);
int t = stmt.executeUpdate(sql);
……
效果截图如下:
改值后 光标移动另一单元格 触发异步保存到数据库
数据库表记录