睡一觉起来后,发现问题居然可以解决了,虽然只解决了一个小问题,但是还是很开心,这里我很小白的分享给大家思路吧
应用场景,表格中,当我们输入的金额存在时就自动返回输入之前的数据
如本例中的红包金额
[caption id="attachment_559" align="alignnone" width="647"] ligerUI获取编辑器数据[/caption]
当我改变红包金额时,如果红包金额在数据库中存在就返回改变之前的值
ligerUI提供了一个事件是可以满足这个要求的 onBeforeSubmitEdit
但是有一个问题,他好像只能直接嵌套一个if,如这样的格式
if(e.column.name == "HBmoney"){ if(e.value == 20){ alert("红包金额不能为20哦"); return false; } }当不满足条件时,会自动返回之前的数据
但是我的要求是,从服务端获取当前输入的红包金额,判断,如果服务端有该金额的红包就自动返回错误,并单元格也自动返回
这里就涉及到一个服务端函数,这样写 了,代码就不能完全执行了,就是说他可以判断,而不可能返回了
所以我的思路是,在添加一个编辑前事件,用于保存编辑前的数据
var qianvalue; function f_onBeforeEdit(e){ //获得编辑器的数据,这里获取编辑前的红包金额 qianvalue = e.value; }
然后我就再添加了一个编辑后事件
//编辑后事件 function f_onAfterEdit(e) { //与服务器交互,判断是否有相同面额的红包 if (e.column.name == "HBmoney") { var d = e.record; gethbmoneyboolean.getHBmoneyBoolean(e.value,getHBboolean); function getHBboolean(getboolean){ if(getboolean){ alert("已存在该红包,请重新修改"); g.updateCell('HBmoney', qianvalue, d); return false; } } } }以上代码,if上面两行是与服务器交互相关代码(DWR相关代码),服务器返回true或false,返回true表示有这样的红包了
if里面如果直接return false 不管是在onAfterEdit还是onBeforeSubmitEdit事件,均不会返回之前的数据,只有添加一个编辑前事件保存一下编辑前的数据,在更新下即可。
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情