天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
查看: 3325|回复: 8

关于getItemValue和doc.findItem().getValue的区别

[复制链接]
cmcchz 发表于 2011-8-9 11:17:09 | 显示全部楼层 |阅读模式
本帖最后由 shary 于 2011-8-11 14:03 编辑

如标题,getItemValue和doc.findItem("").getValue()有什么区别。发现在一些地方getItemValue不能用,只能用doc.findItem("").getValue()。
好像是在用查询的方法得到DOC集合的时候是这样吧,有些时候又可以用getItemValue,请问两个函数的应用场合有什么区别?
shary 发表于 2011-8-9 11:24:01 | 显示全部楼层
您好,getItemValue("字段名"),其实实际上就是
var doc =getCurrentDocument();//当前文档对象
doc.getItemValue("字段名");
而doc.findItem("字段名"),实际上就是
var doc =getCurrentDocument();//当前文档对象
doc.fidItem("字段名");//字段对象
一般用的比较多的是doc.fidItem("字段名").setValue("值");//给字段赋值。
 楼主| cmcchz 发表于 2011-8-9 11:28:09 | 显示全部楼层
我是发现,在有些遍历出DOC的集合的时候,用
subdoc.getItemValue()的时候,后台报错,说是没有getItemValue这个方法
但是换成subdoc.findItem().getValue()可以取到值, 这个是什么情况?
shary 发表于 2011-8-9 11:32:36 | 显示全部楼层
我还真没用过subdoc.findItem().getValue()。您可以找一个具体的例子贴出来嘛?我再源码里看下具体是怎么实现的。
 楼主| cmcchz 发表于 2011-8-9 11:33:44 | 显示全部楼层
var value="";
var sql1="SELECT * FROM tlk_fm_yhwh_qyw_order where item_handle_state='3'";
var docs=queryBySQL(sql1);
if(docs!= null && docs.size() > 0) {   
        for (var iter1 = docs.iterator(); iter1.hasNext();)
         {               
                 var doc = iter1.next();               
                value += doc.findItem("order_id").getValue();                 
        }
}
value;

在这种情况下,我只能用value += doc.findItem("order_id").getValue();   
如果是value += doc.getItemValue("order_id");   就出错了。
shary 发表于 2011-8-9 11:51:14 | 显示全部楼层
您这个只是一个普通的在平台自定义的表单吧。您试一下用下面的累加看下是否可以。
var vl="";
if(doc.getItemValue("order_id")!=null){
  vl=getItemValueAsString("order_id");
}
value+=vl;
您试一下这样用看可以不
 楼主| cmcchz 发表于 2011-8-9 11:57:07 | 显示全部楼层
提示是 DOC里面,不存在getItemValue这个方法。
直接用getItemValue()是没问题的,但是前面加个对象名 doc.getItemValue(),说不行了。
感觉有点怪,以前就没问题,现在突然就不能这么用了,有加前缀的时候
getItemValue要用findItem().getValue()来代替。
shary 发表于 2011-8-9 12:04:32 | 显示全部楼层
我觉得还是因为您在循环遍历的时候某条记录的这个对象为空引起的。因为findItem拿到的是item对象。而findItem().getValue()得到的值是Object。所以才不会出错。当然这样用也没错的。
shary 发表于 2011-8-9 12:04:33 | 显示全部楼层
我觉得还是因为您在循环遍历的时候某条记录的这个对象为空引起的。因为findItem拿到的是item对象。而findItem().getValue()得到的值是Object。所以才不会出错。当然这样用也没错的。

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-12 11:41

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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