永洪社区

标题: 组件隐藏 [打印本页]

作者: 月球上的鲨鱼头    时间: 2022-11-7 16:56
标题: 组件隐藏
目的:实现组件隐藏
要求:跟随过滤选项,当‘项目来源’为且仅为‘BRM’时,组件(签约类型和业务线条)显示,其他情况下都是隐藏状态
如下我写的脚本,总做不到全选状态下组件隐藏:
if(项目来源.getSelectedObjects()[0 == 'BRM' && 项目来源.getSelectedObjects()[0 != 'MIS'  && 项目来源.getSelectedObjects()[0 != '全选' ){
签约类型.visible = true
业务线条.visible = true
}else{
签约类型.visible = false
业务线条.visible = false
}


请问怎么才能实现,‘项目来源’在全选时,在等于MIS时,在全不选时,组件都是隐藏状态,只有在等于BRM时才会显示



作者: 月球上的鲨鱼头    时间: 2022-11-7 17:15
同样的书写方式,拉了一个文本组件测试,却能实现仅在‘项目来源’为MIS时,文本组件显示,其他情况皆不显示
if(项目来源.getSelectedObjects()[0] == 'MIS' && 项目来源.getSelectedObjects()[0] != 'BRM'  && 项目来源.getSelectedObjects()[0] != '全选'){
文本1.visible = true
}else{
文本1.visible = false
}
作者: yhdata_yzm    时间: 2022-11-7 17:57
月球上的鲨鱼头 发表于 2022-11-7 17:15
同样的书写方式,拉了一个文本组件测试,却能实现仅在‘项目来源’为MIS时,文本组件显示,其他情况皆不显 ...

全选就是所有的数据都选择了,var a=getData('下拉列表参数1')
debug(a.size())你判断下它的size呢
作者: 月球上的鲨鱼头    时间: 2022-11-8 09:48
yhdata_yzm 发表于 2022-11-7 17:57
全选就是所有的数据都选择了,var a=getData('下拉列表参数1')
debug(a.size())你判断下它的size呢 ...

size返回的是3

我把‘项目来源’里面BRM和MIS手动排序,MIS放前面,BRM放后面,再按上面写的就生效了,BRM放在前面就无法生效
作者: yhdata_yzm    时间: 2022-11-8 17:24
月球上的鲨鱼头 发表于 2022-11-8 09:48
size返回的是3

我把‘项目来源’里面BRM和MIS手动排序,MIS放前面,BRM放后面,再按上面写的就生效了,B ...

你的数据里有全选这个选项么
作者: 月球上的鲨鱼头    时间: 2022-11-9 09:23
yhdata_yzm 发表于 2022-11-8 17:24
你的数据里有全选这个选项么

有全选
作者: 月球上的鲨鱼头    时间: 2022-11-9 09:24
yhdata_yzm 发表于 2022-11-8 17:24
你的数据里有全选这个选项么

两个选项:BRM和MIS
作者: BoJie    时间: 2022-11-9 09:27
此全选非彼全选
作者: yhdata_yzm    时间: 2022-11-9 09:51
你是想要啥时候显示啥时候隐藏,判断里是不会有全选的,报告上的全选实际上就是选择了全部的值,你是不会get出来全选这个东西的
作者: 月球上的鲨鱼头    时间: 2022-11-10 11:06
yhdata_yzm 发表于 2022-11-9 09:51
你是想要啥时候显示啥时候隐藏,判断里是不会有全选的,报告上的全选实际上就是选择了全部的值,你是不会ge ...

那我应该怎么写才能实现
或者说 先判断列表参数只选中了一项  然后再判断这一项是否是BRM
那么用什么函数可以判断列表参数 是选中了一项还是两项呢
作者: yhdata_yzm    时间: 2022-11-10 11:11
getSelectedObjects().length实际他就是一个一维数组,通过length判断是否勾选,如果勾选了多项用indexOf(getSelectedObjects(),'BRM')如果这个值不等于-1就可以确认这个值是否在选项里
作者: 月球上的鲨鱼头    时间: 2022-11-11 11:35
本帖最后由 月球上的鲨鱼头 于 2022-11-11 11:36 编辑
yhdata_yzm 发表于 2022-11-10 11:11
getSelectedObjects().length实际他就是一个一维数组,通过length判断是否勾选,如果勾选了多项用indexOf(g ...

getSelectedObjects()[0]
getSelectedObjects()[1

请问0和1是什么区别呀

作者: 永洪tech-cp    时间: 2022-11-11 18:59
0和1分别代表选中数组里面的第一个、第二个值
作者: 月球上的鲨鱼头    时间: 2022-11-18 11:44
永洪tech-cp 发表于 2022-11-11 18:59
0和1分别代表选中数组里面的第一个、第二个值

好的 感谢
作者: 月球上的鲨鱼头    时间: 2022-11-18 11:48
本帖最后由 月球上的鲨鱼头 于 2022-11-18 11:51 编辑

本题答案:


var
a=getData('列表参数2');  //取列表过滤中绑定的值,以grid的形式返回
var Vsize=a.size();     //获取grid的行数
//debug(Vsize);
var arr1=new Array();
for(i=Vsize-1;i>0;i--){
arr1[i]=a.get(i,0);
//debug(arr1)
}

if(
列表参数1.getSelectedObjects()[1 != 'MIS'
&&列表参数1.getSelectedObjects()[1 != '无'
&& 列表参数1.getSelectedObjects()[0 == 'BRM'
)
{
列表参数2.visible = true  //显示
}else{
列表参数2.visible = false  //隐藏
//var c=['选项1','选项2']                                    //取列表过滤中绑定的值
//
列表参数2.setSelectedObjects(c,STRING)     //多选 c为选项
//
列表参数2.setSelectedObjects([''],STRING)   //清空选项
业务线条.setSelectedObjects(arr1,STRING)  //恢复全选
}


作者: yhdata_yzm    时间: 2022-11-18 13:23
月球上的鲨鱼头 发表于 2022-11-18 11:48
本题答案:


作者: 176739645678    时间: 2022-11-18 14:47
要求:跟随过滤选项,当‘项目来源’为且仅为‘BRM’时,组件(签约类型和业务线条)显示,其他情况下都是隐藏状态
如下我写的脚本,总做不到全选状态下组件隐藏
作者: SamuelLiu    时间: 2022-11-18 18:34
月球上的鲨鱼头 发表于 2022-11-18 11:48
本题答案:






欢迎光临 永洪社区 (https://club.yonghongtech.com/) Powered by Discuz! X3.4