2019-03-27 08:05 | 题主 | ||||||||
|
如何在修改界面确定时获取修改前后的值? 如题,根据系统自动生成的增删改查,修改按钮对应的click语句如下:Wb.edit(app.grid1, { win: app.editWin_adjust, url: 'm?xwl=HR/hr/person/update', failure: app.failureHandler }); 请教大家如何获取某个属性修改前后的值? |
2019-03-28 08:52 | #1 | ||||||||
|
app.grid1.getSelection()[0].data就是修改的记录值 |
2019-03-29 09:44 | #2 | ||||||||
|
var rec = app.grid1.getSelection()[0]; Wb.edit(app.grid1, { win: app.editWin_adjust, url: 'm?xwl=HR/hr/person/update', failure: app.failureHandler, beforerequest: function() { if (rec) { console.log('=====beforerequest========:'); var mydata = rec.data; var hospital1_old = mydata.hospital1; console.log('=============:' + hospital1_old); } }, success: function() { if (rec) { console.log('=====success========:'); var mydata = rec.data; var hospital1_new = mydata.hospital1; console.log('=============:' + hospital1_new ); } } }); 我是通过在两个回调中手动记录。beforerequest中记录修改前数据,success中记录修改后数据。 感觉有些不优雅, 尝试直接使用: var value_new = data['hospital1']; var value_old = data['#hospital1'];//打算这样获取原值 发现后者data['#hospital1']获取的是空 请教大家,是否有无其他更便捷的方法? |
2019-04-08 09:34 | #3 | ||||||||
|
win.editHandler(); //Wb.edit调用后默认提供的方法 |
2019-08-14 12:46 | #4 | ||||||||
|
以下是我实现时候用到的一段代码, 编辑一个表格的一行,弹出编辑对话框,然后再 winok事件中 获取 修改过的字段,并判断字段的前后。 values = Wb.applyIf(Wb.getValue(app.appwin), Wb.getData(app.editRec, true)); //Wb.getData用于获取记录中的原始值,见Wb.getData方法 var fieldName ='', oldValue, newValue, modifiedCnt = 0, updateFields = [], updateFieldNames=[]; Wb.each(values, function(field) { //直接对一个jason数据枚举比较 //只比较那些原来记录中有的字段,界面上获取的字段可能会比 数据库实际字段多,因此必须首先找到 有数据库中有定义的字段。 if (field.indexOf('#') === 0) { //#CONN_SCOPE_TYPE 存放old Value, CONN_SCOPE_TYPE 存放新的值 fieldName = field.substring(1); oldValue = ''; newValue = ''; //对于一些日期类型等,需要转换为toString()才能进行 if(!Wb.isEmpty(values[field])){ oldValue = values[field].toString().replace(/\r\n/g,'\n'); } if(!Wb.isEmpty(values[fieldName])){ newValue = values[fieldName].toString().replace(/\r\n/g,'\n'); } if (oldValue == newValue) { //do nothing ( fieldName + ':' + oldValue + ' pk ' + newValue + ', equals'); } else { if (newValue === '') { updateFields.push(fieldName + '= null'); } else { updateFields.push(fieldName + '= \'' + newValue + '\''); } updateFieldNames.push(fieldName); modifiedCnt++; } } }); 不知道是否有更高效、更简洁的方式 |