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

计算脚本控件里调用函数库函数赋值给其他控件问题

[复制链接]
9975 发表于 2012-11-23 15:29:26 | 显示全部楼层 |阅读模式
本帖最后由 purple 于 2012-11-28 18:40 编辑


流程: 选中下拉提示框 经营权单位 后 根据 经营单位查询数据库 初始化赋值给表单其他控件,没有反应,是什么原因?
       (有一种方法是在每个控件值脚本里调用哪个函数是可以实现的,但这样太麻烦,我想直接放在 计算脚本控件里调用函数赋值其他控件)

(注:经营权单位下拉框已经 勾选刷新和重计算,计算脚本控件 也已经勾选重计算选项)

函数库函数如下:


/*根据经运权单位名称获取 省  标志牌信息   点击查询按钮*/

function setShengBiaozhiPai(name){
    var sql = " select * from bsc_company_tas  where C_MINGCHENG = '"+name+"' ";
    var datas  = queryByDSName("new_tas",sql);
    var iterator = datas.iterator();
    var rtn = "该企业不存在!";

     if(datas != null && iterator.hasNext())
     {
         var m = iterator.next();
         if(m.get("c_danganzt") == "锁定")
        {
                      rtn = "该企业档案被锁定,不能办理业务!";
        } else
        {
            var doc = getCurrentDocument();
            doc.findItem("operate_unit_id").setValue(m.get("c_id"));
            rtn="";
            //rtn = doc.findItem("operate_unit_id").setValue(m.get("c_id"));
         }
    }
    return rtn;
}


计算脚本控件 里调用这个函数如下:


#include "SetValues";
var rtn = setShengBiaozhiPai(getItemValueAsString("operate_unit"));
if(rtn != "")
{
    "<font color='red' >"+rtn+"</font>";
}else
{
   rtn="该企业可使用!";
   "<font color='#fff' >"+rtn+"</font>";
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册成为天翎用户

×
bess 发表于 2012-11-23 15:39:37 | 显示全部楼层
本帖最后由 shary 于 2012-11-23 15:45 编辑

您好,您的计算脚本里面没有返回值出去。请将您的计算脚本里的脚本改成如下所示:
#include "SetValues";
var rtn = setShengBiaozhiPai(getItemValueAsString("operate_unit"));
var s="";
if(rtn != "")
{
   s= "<font color='red' >"+rtn+"</font>";
}else
{
   rtn="该企业可使用!";
  s= "<font color='#fff' >"+rtn+"</font>";
}
s;
回复

使用道具 举报

 楼主| 9975 发表于 2012-11-23 15:57:55 | 显示全部楼层
试过了,还是不行的,
那个函数,本来放在按钮事件里调用的话,是没有问题,就是以下拉框值形式调用是才出现这个问题
回复

使用道具 举报

 楼主| 9975 发表于 2012-11-23 15:59:13 | 显示全部楼层
doc.findItem("operate_unit_id").setValue(m.get("c_id"));

这一句没有赋到值给 operate_unit_id 控件
回复

使用道具 举报

bess 发表于 2012-11-23 16:12:25 | 显示全部楼层
本帖最后由 shary 于 2012-11-23 16:19 编辑

您好,
1、请问字段名operate_unit是否为您下拉框的名称,然后您的字段名operate_unit_id是否为一个文本框控件呢?
2、doc.findItem("operate_unit_id").setValue(m.get("c_id"))赋值不成功,麻烦您在这句脚本这前加一句打印语句确认c_id中是否存在值。具体的打印语句如下:
println("获取值====="+m.get("c_id"));在tomcat控制台查看打印语句中对应的那个值是否打印出来
3、您的函数中查询出来的记录是循环遍历的,当前文档operate_unit_id字段最后被赋的值正常应该是您遍历的最后一条记录对应的字段c_id的值。请仔细检查您的脚本。谢谢
回复

使用道具 举报

 楼主| 9975 发表于 2012-11-23 16:31:50 | 显示全部楼层
您好,请问您这里说的下拉框调用不行,请问您是在哪里调用的呢?是写在选项脚本还是值脚本里面??

答:我的意思是说,上面函数换成在按钮事件里执行就没有问题
    换成根据选中下拉框值改变调用函数就出现上面问题,加载下拉框值是写在选项脚本里的

同时您上一楼说的哪句"doc.findItem("operate_unit_id").setValue(m.get("c_id"));"赋值不成功,是否就会您上面说的,给下拉框赋值不成功??如果是,请问您这里的值"m.get("c_id")"是否是下拉框的选项之一?

答:下拉框赋值是成功的,问题不在这,而是当下拉框值改变时,我想触发计算脚本里函数   
     setShengBiaozhiPai(getItemValueAsString("operate_unit"));
     执行"doc.findItem("operate_unit_id").setValue(m.get("c_id"));" 这个没有反应

     获取下拉框里选项脚本如下:
     var sql=" select   c_id,C_MINGCHENG   from bsc_company_tas  where  rownum < 11  ";

var opts = $TOOLS.createOptions();

var query = queryByDSName("new_tas",sql); //queryBySQL(sql);

var value = "";

if(query!=null)

{

   for(var iter = query.iterator();iter.hasNext();){

  var doc= iter.next();

  var  id = doc.get("c_id");
  value= doc.get("C_MINGCHENG");

// opts.add(value,id);
  opts.add(value,value);

  }

}

opts;
回复

使用道具 举报

shary 发表于 2012-11-23 16:36:09 | 显示全部楼层
1、您的下拉框只需要勾选刷新,不需要勾选重计算
2、计算脚本勾选重计算
3、楼上我同事的回复重新编辑了下。麻烦您对照那三点重新检查下您的代码。谢谢
回复

使用道具 举报

 楼主| 9975 发表于 2012-11-26 14:40:57 | 显示全部楼层
不是脚本问题的,因为我把上面的函数放在按钮事件里调用执行,是没有任何问题的,放在计算脚本控件里,才出现没有反应的问题
回复

使用道具 举报

purple 发表于 2012-11-26 17:59:05 | 显示全部楼层
您好,放在按钮事件里去调用,效果是正常的,是因为您有去触发。您在计算脚本去调用对应的函数,选择好经营权单位,该字段勾选刷新,计算脚本勾选重计算,即使在这之前,能获取到所需字段值的,您赋值也看不到效果的,因为页面没刷新。计算脚本,没有刷新属性。不能作为主动方,去控制其他字段信息值。
回复

使用道具 举报

 楼主| 9975 发表于 2012-11-28 17:12:47 | 显示全部楼层
换回按钮事件可是实现,先这样了
回复

使用道具 举报

本版积分规则

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

GMT+8, 2026-8-14 16:08

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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