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

QQ登录

只需一步,快速开始

楼主: liuaqiuping

[处理中5] js 中data setValue保存 在保存后事件中getOldVaue取不到之前的值

  [复制链接]

58

主题

238

帖子

503

积分

高级会员

Rank: 4

积分
503
QQ
 楼主| 发表于 2014-6-14 11:47:30 | 显示全部楼层
本帖最后由 liuaqiuping 于 2014-6-14 11:53 编辑
fpj 发表于 2014-6-14 11:36
我说一下你的需求,看看是不是可以理解为这样
你要对当前数据进行修改
如果修改 A字段,那么 要逻辑处理B字 ...

想法是在后台中能够判别,我要去操作其它表,写记录表,修改其它表数据状态。
在其它界面上,我也是这样的需要,在后台保存后事件中可以取到原始值,但是在这里无法是保存前事件还是保存后事件都无法取到原始值,唯一的区别就是这里是利用的js的setValue而其它界面是界面上的组件。
我这里是点击某个按钮设置状态,直接在js中设置setValue,然后保存,进入后台的保存后事件
回复 支持 反对

使用道具 举报

45

主题

4492

帖子

3960

积分

论坛元老

Rank: 8Rank: 8

积分
3960
QQ
发表于 2014-6-14 12:55:42 | 显示全部楼层
liuaqiuping 发表于 2014-6-14 11:47
想法是在后台中能够判别,我要去操作其它表,写记录表,修改其它表数据状态。
在其它界面上,我也是这样的 ...

修改其它的表,你可以在修改前先取出旧值 ,然后进行判断,
你也可以用数据库触发器来实现。

评分

参与人数 1 +4 收起 理由
jishuang + 4 赞一个!

查看全部评分

向前进,向前进,我们……
回复 支持 反对

使用道具 举报

58

主题

238

帖子

503

积分

高级会员

Rank: 4

积分
503
QQ
 楼主| 发表于 2014-6-16 08:57:09 | 显示全部楼层
本帖最后由 liuaqiuping 于 2014-6-16 08:58 编辑
fpj 发表于 2014-6-14 12:55
修改其它的表,你可以在修改前先取出旧值 ,然后进行判断,
你也可以用数据库触发器来实现。 ...

不用触发器来做,应该如何处理? 现在在bizdata的值改变事件中取到了原始值和现在值,改如何去后台执行我的逻辑了并且和保存事件在同一个事务中
回复 支持 反对

使用道具 举报

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-6-16 09:05:58 | 显示全部楼层
测试没有发现这个问题,发一下js代码和java代码
另外,在setValue之后,输出bizdata的getJson方法的结果看看
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

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

使用道具 举报

58

主题

238

帖子

503

积分

高级会员

Rank: 4

积分
503
QQ
 楼主| 发表于 2014-6-16 09:42:49 | 显示全部楼层
本帖最后由 liuaqiuping 于 2014-6-16 09:46 编辑
zhaixin 发表于 2014-6-16 09:05
测试没有发现这个问题,发一下js代码和java代码
另外,在setValue之后,输出bizdata的getJson方法的结果看 ...

public static void taskSourceMngProcessAfterSaveT_TaskSourceAction() {
                Table table =(Table) ContextHelper.getActionContext().getParameter("table");
                for(Iterator it = table.iterator(ModifyState.NEW); it.hasNext();){
            Row r = (Row) it.next();
            String id  = r.getString("T_TaskSource");
            String sqlString="Update T_TaskSource T Set T.fJD = 'PMC计划中' Where T=:id And T.fJD='新建任务'";
            HashMap<String, Object> map= new HashMap<String, Object>();
            map.put("id", id);
            KSQL.executeUpdate(sqlString, map, "/TaskMng/Task/data" , null);
        }
                for(Iterator it = table.iterator(ModifyState.EDIT); it.hasNext();){
            Row r = (Row) it.next();
            String id  = r.getString("T_TaskSource");
            String zt = r.getString("fXMZT");
            String oldZT = r.getOldValue("fXMZT").toString();//这里无法获取
            System.out.println("编辑:"+ zt+" "+ oldZT);
            if(!zt.equals(oldZT) && zt.equals("取消")){
                    //修改状态为取消,则将项目下所有的任务都设为取消状态
                    String sqlString = "Update T_Task set fRWZT='取消' where fsID='"+id+"'";
                    sqlString =sqlString + " Insert into T_TaskOptRecord(fID,fsTable,fsID,fContent,fCreateEmpCode,fCreateEmpName,fCreateDT,fType)"+
                            " Select newid(),?,fID,?,?,?,?,? from T_Task where fsID='"+id+"' ";
                                HashMap<String,String> map = new HashMap<String, String>();
                                map.put(DatabaseProduct.MSSQL.name(), sqlString);
                                ArrayList<Object> list = new ArrayList<Object>();
                                list.add("T_Task");
                                list.add("取消了任务");
                                list.add(ContextHelper.getPerson().getCode());
                                list.add(ContextHelper.getPerson().getName());
                                list.add(new Date(System.currentTimeMillis()).toLocaleString());
                                list.add("操作日志");
                                System.out.println("sqlstring:"+sqlString);
                                SQL.executeUpdate(map, list, "/TaskMng/Task/data");
            }
        }
        }
回复 支持 反对

使用道具 举报

58

主题

238

帖子

503

积分

高级会员

Rank: 4

积分
503
QQ
 楼主| 发表于 2014-6-16 09:44:48 | 显示全部楼层
本帖最后由 liuaqiuping 于 2014-6-16 09:46 编辑
zhaixin 发表于 2014-6-16 09:05
测试没有发现这个问题,发一下js代码和java代码
另外,在setValue之后,输出bizdata的getJson方法的结果看 ...

mainActivity.newItemsMenuClick= function(event){
        var menuItemID = event.getData().itemId;
        var data = justep.xbl("listData");
        var id=data.getCurrentID();
        if(!id){Base.showMessageBox({img:"error",msg:"您还没有选择要操作的合同项目",title:"提示",type:0});return;}//没有选择任务
        if (menuItemID == "menuZT" ) {
                mainActivity.setStatus("暂停", id);
        }else if (menuItemID== "menuCancel"){
                Base.showMessageBox({img:"question",msg:"您确定要设置状态为取消吗?取消后不能进行任何操作",title:"提示",type:1,callback:function(event){
                                if(event.status=="ok"){
                                        mainActivity.setStatus("取消", id);
                                }
                        }
                });
        }else if(menuItemID=="menuZC"){
                mainActivity.setStatus("正常", id);
        }
};

mainActivity.setStatus=function(zt,rowID){
        var data = justep.xbl("listData");
        data.setValue("fXMZT", zt, rowID);
        data.xformsRefresh();//这个加不加都一样,我以为setValue之后还需要做某个操作让其感知,但无效果
        if(data.saveData()){
                Base.showMessageBox({img:"info",msg:"设置状态成功",title:"提示",type:0,callback:function(){
                                data.refreshData();
                        }
                });
        }
}
回复 支持 反对

使用道具 举报

58

主题

238

帖子

503

积分

高级会员

Rank: 4

积分
503
QQ
 楼主| 发表于 2014-6-16 10:18:23 | 显示全部楼层
zhaixin 发表于 2014-6-16 09:05
测试没有发现这个问题,发一下js代码和java代码
另外,在setValue之后,输出bizdata的getJson方法的结果看 ...

setValue之后的json数据
无标题.jpg
回复 支持 反对

使用道具 举报

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-6-16 11:15:14 | 显示全部楼层
从截图中看到fXMZT的原值为null,也就是原来没有值,所以在java中获取不到
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

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

使用道具 举报

58

主题

238

帖子

503

积分

高级会员

Rank: 4

积分
503
QQ
 楼主| 发表于 2014-6-16 11:44:34 | 显示全部楼层
zhaixin 发表于 2014-6-16 11:15
从截图中看到fXMZT的原值为null,也就是原来没有值,所以在java中获取不到

是有值的,显示用了html 是否是这个原因
回复 支持 反对

使用道具 举报

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-6-16 14:13:22 | 显示全部楼层
数据是存在bizdata中的,和显示无关
在setValue之前,先getValue,看看有没有值
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-5 23:40 , Processed in 0.077831 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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