起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2764|回复: 7

[处理中3] cancelUpdates

[复制链接]

46

主题

150

帖子

451

积分

中级会员

Rank: 3Rank: 3

积分
451
QQ
发表于 2016-5-27 10:13:32 | 显示全部楼层 |阅读模式
data.js

cancelUpdates : function(noFireEvent){
                        var data = this.data;
                        data.disableRecordChange();
                        try {// 特殊删除,解决关联计算触发问题
                                var row = this.row,b=false;
                                var recordState = row.userdata.recordState;
                                if (Data.STATE.EDIT == recordState) {
                                        b=true;
                                        for ( var k in data.defCols) {
                                                var def = data.defCols[k];
                                                //要判断是不是有计算规则,UI计算列
                                                if (!data.isUICalculateCol(k) && !(def.calculate instanceof Expr)){
                                                        row[k].changed = 0;
                                                        row[k].value.set(row[k].originalValue);
                                                }
                                        }
                                }else if (Data.STATE.NEW == recordState) {
                                        b=true;
                                        data.remove(row);
                                }
                                if(b){
                                        row.userdata.recordState = Data.STATE.NONE;
                                        if(!noFireEvent){
                                                var eventData = {};
                                                eventData.source = data;
                                                eventData.changedSource = data;
                                                eventData.type = 'cancel';
                                                eventData.selfChanged = true;
                                                data.doDataChanged(eventData);
                                        }
                                }
                        } finally {
                                data.enabledRecordChange();
                        }
                },

中的代码段
if (!data.isUICalculateCol(k) && !(def.calculate instanceof Expr)){
                                                        row[k].changed = 0;
                                                        row[k].value.set(row[k].originalValue);
                                                }
把编辑中的一行不管有没有改变,都还原了回去,造成没变换的字段被变成undefined
是不是有点问题
发表于 2016-5-27 11:41:30 | 显示全部楼层
请问您重现这个问题吗吗??如果重现了!把资源发来!本地重现看看是否存在这个问题!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

46

主题

150

帖子

451

积分

中级会员

Rank: 3Rank: 3

积分
451
QQ
 楼主| 发表于 2016-5-27 14:52:41 | 显示全部楼层
我本地出现了这个问题,

测试.rar

1.42 KB, 下载次数: 82

回复 支持 反对

使用道具 举报

46

主题

150

帖子

451

积分

中级会员

Rank: 3Rank: 3

积分
451
QQ
 楼主| 发表于 2016-5-27 14:53:53 | 显示全部楼层
从代码上用改可以看出,对一行数据,没有判断row[k].changed = ==1就进行了还原操作
回复 支持 反对

使用道具 举报

4

主题

1579

帖子

2706

积分

内部用户

积分
2706
发表于 2016-5-27 15:53:17 | 显示全部楼层
谢谢你的支持,确实有这个问题
回复 支持 反对

使用道具 举报

8

主题

34

帖子

154

积分

初级会员

Rank: 2

积分
154
QQ
发表于 2021-8-17 10:47:25 | 显示全部楼层
在使用中还发现一个问题:对list型的data进行newData后,再进行cancelUpdates操作,预期是该data会重置清空,但实际会报js错误。通过跟踪源码,发现是在cancelUpdates中调用remove方法报错:
else if (Data.STATE.NEW == recordState) {
        b=true;
        data.remove(row);   --  remove方法报错
}
继续跟踪remove方法,发现是在var parent = row.row.userdata.parent处报错,原因是row.row为undefined。

实际上,我直接对data进行each并调用remove(row),也会报这个错。

请验证一下remove方法是否存在bug,谢谢。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35880
发表于 2021-8-17 11:56:54 | 显示全部楼层
each的过程中不能就不能删除,要删除,在变量的过程中把删除的数据进行记录,在遍历外面删除
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

8

主题

34

帖子

154

积分

初级会员

Rank: 2

积分
154
QQ
发表于 2021-8-17 12:43:32 | 显示全部楼层
jishuang 发表于 2021-8-17 11:56
each的过程中不能就不能删除,要删除,在变量的过程中把删除的数据进行记录,在遍历外面删除 ...

谢谢,each中不能remove这点可以理解。
cancelUpdates报错的问题还请帮忙分析一下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-3-29 19:44 , Processed in 0.124909 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表