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

QQ登录

只需一步,快速开始

查看: 3056|回复: 12

[结贴] Data.setValue() 设置主键问题

[复制链接]

5

主题

27

帖子

234

积分

中级会员

Rank: 3Rank: 3

积分
234
QQ
发表于 2016-9-7 21:16:46 | 显示全部楼层 |阅读模式
版本: BeX5V3.1 小版本号:
数据库: MySQL 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 7 浏览器: Chrome
                                        me.comp("detailData").loadData(getData);
                                        var data = me.comp('detailData');
                                        var lRow = data.getLastRow(), row ;
                                        data.first();
                                        do {
                                                row = data.getCurrentRow();
                                                console.log(data.val('dataRecordDetail') + ' *****' ); // 系统生成主键重复相同
  •                                                 data.setValue('dataRecordDetail',justep.UUID.createUUID()) ; // js 端重新生成UUID 设置主键dataRecordDetail UUID。这句会引起死循环(没有任何ValueChanged 事件),原因?

                                                data.next();
                                        } while (lRow != row);

  js端遍历设置主键ID 会引起死循环,那位大神知道原因?

12

主题

62

帖子

182

积分

初级会员

Rank: 2

积分
182
QQ
发表于 2016-9-8 08:35:21 | 显示全部楼层
我遇到的问题应该和你差不多,loadData和setValue这个函数有疑问啊,感觉数据并不是马上就有了,需要刷新一次才会加载到数据
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2016-9-8 10:05:38 | 显示全部楼层
本地测试没问题,数据还改变也会触发data的onValueChanged事件中,没有死循环

如果数据多不推荐在前端遍历数据修改值,可以在后端返回获取前修改table中的数据
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

5

主题

27

帖子

234

积分

中级会员

Rank: 3Rank: 3

积分
234
QQ
 楼主| 发表于 2016-9-8 10:59:08 | 显示全部楼层
本帖最后由 freedomme 于 2016-9-8 11:04 编辑

谢谢版主,我本地的确是出现死循环这种情况,见下图 QQ截图20160908104232.png


增加设置主键后,data.setValue('dataRecordDetail',justep.UUID.createUUID()) ; // js 端设置UUID
见下图:
QQ截图20160908104438.png


一直会到浏览器崩溃。从控制台打印可以看到,data.setValue('dataRecordDetail',justep.UUID.createUUID()) ; 后,data.val('dataRecordDetail') 为 undefined
真想知道是代码哪儿出现问题,如果实在是没有办法,只能从后台处理了


回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2016-9-8 13:30:58 | 显示全部楼层
看你loadData了多少条数据?
你的这个看不出是死循环,你的data中loadData了多少条数据遍历的时候就会输出多少次
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

5

主题

27

帖子

234

积分

中级会员

Rank: 3Rank: 3

积分
234
QQ
 楼主| 发表于 2016-9-8 15:37:37 | 显示全部楼层
谢谢版主,ladData只有两条数据。第一张图控制台打印了两次 ,因为没有data.setValue('dataRecordDetail',justep.UUID.createUUID()),这句代码。第二张图,加入data.setValue('dataRecordDetail',justep.UUID.createUUID()) ,打印了8万多次(其实还在不断打印,直到浏览器崩溃),见截图 QQ截图20160908153058.png

回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2016-9-8 16:37:37 | 显示全部楼层
你的这段逻辑在什么地方写的?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

5

主题

27

帖子

234

积分

中级会员

Rank: 3Rank: 3

积分
234
QQ
 楼主| 发表于 2016-9-8 17:14:35 | 显示全部楼层
太感谢版主的关注了,完整事件代码如下:

        // 加载明细记录
        Model.prototype.windowDialog1Close = function(event)
        {
// console.log("active") ;
                  var inputData = this.comp("output1");
                  var str = inputData.get("value") ;
                // 构造参数
                var params = new biz.Request.ActionParam();
                params.setString("testMethodID", str);
                  // 调用动作
                  var me = this ;
                biz.Request.sendBizRequest(
                {
                        "context" : this.getContext(),
                        "action" : "getTestItems",
                        "parameters" : params,
                        "callback" : function(data) {
                                // data.ignoreError 是否忽略默认的异常处理,默认值true
                                data.ignoreError = false;
                                // data.state 请求返回状态,标识请求是否执行成功
                                if (data.state) {
                                        justep.Util.hint("传入简单参数调用成功");
                                        // 输出返回结果
//                                        debugger;
                                        var getData = data.response;
                                       
//                                        me.comp("detailData").clear();
                                        me.comp("detailData").loadData(getData);
                                        var data = me.comp('detailData');
                                        var lRow = data.getLastRow(), row ;
                                        data.first();
                                        do {
                                                row = data.getCurrentRow();
                                                console.log(data.val('dataRecordDetail') + ' *****' );
                                                data.setValue('dataRecordDetail',justep.UUID.createUUID()) ; // js 端设置UUID
                                                data.next();
                                        } while (lRow != row);
                                        alert("调用成功,返回值是"+getData);
                                }
                        }
                });
  
        };
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2016-9-8 17:39:08 | 显示全部楼层
把.w和js文件压缩发一下看看
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

5

主题

27

帖子

234

积分

中级会员

Rank: 3Rank: 3

积分
234
QQ
 楼主| 发表于 2016-9-8 17:54:14 | 显示全部楼层
谢谢,真是不错的平台。第一次看到这样响应速度。见附件

dataRecord.rar

4.85 KB, 下载次数: 24

.w.j文件

回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 15:24 , Processed in 0.069635 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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