ligerUI编辑单元格错误时(与服务器交互) 自动恢复的处理办法

睡一觉起来后,发现问题居然可以解决了,虽然只解决了一个小问题,但是还是很开心,这里我很小白的分享给大家思路吧


应用场景,表格中,当我们输入的金额存在时就自动返回输入之前的数据

如本例中的红包金额



[caption id="attachment_559" align="alignnone" width="647"]ligerUI获取编辑器数据 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/天,具体规则查看活动详情Blog Img