squall0828青铜一
5 小时前 发布在问答
报表显示
请问,我通过下拉参数列表值显示不一样的报表,设置多选的时候为什么不生效,以下是我设置的公式,帮忙看看,谢谢
if(param["参数"]=="PO")
{
    采购.visible=true;
    销售.visible=false;
}
else if(param["参数"]=="SO")
{
    销售.visible=true;
    采购.visible=false;
}
else if (and(param["参数"]=="SO",param["参数"]=="PO"))
{
    销售.visible=true;
    采购.visible=true;
}


95
17
精彩评论17
yhdata_lyaa
发表于 5 小时前 显示全部楼层
数组类型的参数,要写
param["参数"][0]表示第一个值
param["参数"][1]表示第二个值
回复

使用道具 2#

squall0828青铜一
发表于 5 小时前 显示全部楼层
是每个if条件里面要改成这样吗
else if (and(param["参数"][0]=="SO",param["参数"][1]=="PO"))
回复

使用道具 3#

yhdata_lyaa回复squall0828青铜一
发表于 2025-03-17 13:22:11
是的
回复

squall0828青铜一
发表于 3 小时前 显示全部楼层
报告: 报表显示2, 组件: 参数,
第11行, TypeError: Cannot read property "0" from null ([script]#11)

报这个错误
回复

使用道具 4#

yhdata_lyaa回复squall0828青铜一
发表于 2025-03-17 14:49:51
你现在是怎么写的呀,11行是什么
回复

squall0828青铜一
发表于 2 小时前 显示全部楼层
if(param["参数"]=="PO")
{
    采购.visible=true;
    销售.visible=false;
}
else if(param["参数"]=="SO")
{
    销售.visible=true;
    采购.visible=false;
}
else if (and(param["参数"]["0"]=="PO",param["参数"]["1"]=="SO"))
{
    销售.visible=true;
    采购.visible=true;
}
这是我的代码
回复

使用道具 5#

yhdata_lyaa回复squall0828青铜一
发表于 2025-03-17 15:05:25
"0"不要引起来呢,前面的参数如果都是数组类型的,都要写这个哦[]
回复

squall0828青铜一 回复yhdata_lyaa
发表于 2025-03-17 15:10:41
不要引号就报这个错,报告: 报表显示2, 组件: 参数, 第11行, TypeError: Cannot read property "0.0" from null ([script]#11)
回复

哈嘿哈嘿哈白银三
发表于 2 小时前 显示全部楼层
你试试在变化时运行里这样写呢?采购.visible=false;
销售.visible=false;

if(find("PO",param['参数'])>0)
{
采购.visible=true;
}

if(find("SO",param['参数'])>0)
{
销售.visible=true;
}
回复

使用道具 6#

squall0828青铜一 回复哈嘿哈嘿哈白银三
发表于 2025-03-17 15:30:54
老师,我的需求是存在多选,而且下拉值存在多种的情况,比如有PO、SO、MO等等
回复

哈嘿哈嘿哈白银三 回复squall0828青铜一
发表于 2025-03-17 16:07:57
我知道,这个就支持多选,如果你选了PO、SO,那么这两个if会同时生效,如果你只选择了PO,就只有第一个if生效,我用这个脚本做过多选的行列隐藏是好使的,你可以试试
回复

哈嘿哈嘿哈白银三 回复squall0828青铜一
发表于 2025-03-17 16:13:13
啊,不对,少了一段,得加一段数组转换 var cs =参数.getSelectedObjects(); var cs1 = cs.join(","); 采购.visible=false; 销售.visible=false; if(find("PO",cs)>0) { 采购.visible=true; } if(find("SO",cs)>0) { 销售.visible=true; }
回复

squall0828青铜一
发表于 1 小时前 显示全部楼层
上面那个代码是在我原来的基础上加,还是直接替换
回复

使用道具 7#

哈嘿哈嘿哈白银三 回复squall0828青铜一
发表于 2025-03-17 16:32:16
我发的和你原来的是两种不一样的实现方式,看你要用哪一种
回复

squall0828青铜一 回复哈嘿哈嘿哈白银三
发表于 2025-03-17 16:33:47
我原来这种就实现不了多选;if(param["参数"]=="PO") { 采购.visible=true; 销售.visible=false; } else if(param["参数"]=="SO") { 销售.visible=true; 采购.visible=false; } else if (and(param["参数"]=="SO",param["参数"]=="PO")) { 销售.visible=true; 采购.visible=true; } ,你后面这个就可以实现多选
回复

squall0828青铜一
发表于 1 小时前 显示全部楼层
var cs1 = cs.join(","); 这段是什么意思,通拼接吗,中间用逗号隔开,但是我看报表里面多选的时候是";"
回复

使用道具 8#

哈嘿哈嘿哈白银三 回复squall0828青铜一
发表于 2025-03-17 16:51:26
将多选的数组转换成以“,”分割的字符,因为find这个函数不能查数组,所以要转成字符
回复

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
100W

用户等你来哦

Copyright   ©2012-2025  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
返回顶部