异步保存修改记录

页面数据修改记录保存入库

需求背景:

客户提出对报表填报值进行过的修改信息希望能保存到数据库中,形成记录以备查询操作记录。

原理分析

填报值 进行 修改时 只需通过异步方式触发 将相关数据保存入库即可。

这里我们可以分别用_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);

……

效果截图如下:

改值后 光标移动另一单元格 触发异步保存到数据库

数据库表记录