帆软-动态列实现(JS动态下拉框和动态列)

1、设置下拉框(控制展示的列名)

数据集 select * from 销量

设计报表

B1:split($col,",") 横向扩展

A2 : ds2.select(#0)  纵向扩展

B2 : ds2.value(A2,B1)  不扩展

设置列名对应的下拉框控件

所有控件的类型为「下拉框控件」

默认非可见,绑定sql查询条件

添加JS时事件

JS脚本

//获取下拉框控件area
var area = this.options.form.getWidgetByName("area");
//获取下拉框控件xl
var xl = this.options.form.getWidgetByName("xl");
//获取下拉框控件cplx
var cplx = this.options.form.getWidgetByName("cplx");
//获取下拉框控件cp
var cp = this.options.form.getWidgetByName("cp");
//获取下拉框控件ywjc
var ywjc = this.options.form.getWidgetByName("ywjc");
//获取下拉框控件xsy
var xsy = this.options.form.getWidgetByName("xsy");
//获取下拉框选中值
var a = this.getValue();
//判断a中是否包含对应的字段,返回true或false
var a1 = a.includes("地区");
var a2 = a.includes("销量");
var a3 = a.includes("产品类型");
var a4 = a.includes("产品");
var a5 = a.includes("英文简称");
var a6 = a.includes("销售员");
//alert(a1,a2,a3,a4,a5,a6);
//对不同的控件设置隐藏显示
	if(a1) {
    area.setVisible(true);
    this.options.form.getWidgetByName("Labelarea").setVisible(true);
} else {    
    area.setVisible(false);
    this.options.form.getWidgetByName("Labelarea").setVisible(false);
}
	if(a2) {
    xl.setVisible(true);
    this.options.form.getWidgetByName("Labelxl").setVisible(true);
} else {    
    xl.setVisible(false);
    this.options.form.getWidgetByName("Labelxl").setVisible(false);
}
if(a3) {
    cplx.setVisible(true);
    this.options.form.getWidgetByName("Labelcplx").setVisible(true);
} else {    
    cplx.setVisible(false);
    this.options.form.getWidgetByName("Labelcplx").setVisible(false);
}
if(a4) {
    cp.setVisible(true);
    this.options.form.getWidgetByName("Labelcp").setVisible(true);
} else {    
    cp.setVisible(false);
    this.options.form.getWidgetByName("Labelcp").setVisible(false);
}
if(a5) {
    ywjc.setVisible(true);
    this.options.form.getWidgetByName("Labelywjc").setVisible(true);
} else {    
    ywjc.setVisible(false);
    this.options.form.getWidgetByName("Labelywjc").setVisible(false);
}
if(a6) {
    xsy.setVisible(true);
    this.options.form.getWidgetByName("Labelxsy").setVisible(true);
} else {    
    xsy.setVisible(false);
    this.options.form.getWidgetByName("Labelxsy").setVisible(false);
}

效果 根据选择列展示下拉框

报表中,你可以通过设置参数元素的显示方式可见性属性来控制下拉框的可见性。 如果你想要将下拉框设置为不可见,可以将参数元素的显示方式设置为“隐藏”,并将可见性属性设置为“不可见”。通过这种方式,下拉框虽然不会在报表中显示,但是可以在后台使用。 以下是一个示例代码,展示了如何通过JavaScript代码将下拉框设置为不可见: ```javascript // 获取报表参数对象 var params = report.getReportParams(); // 获取指定参数对象 var param = params.getParam("参数名称"); // 将参数的显示方式设置为隐藏 param.setDisplayType("hidden"); // 将参数的可见性属性设置为不可见 param.setVisible(false); ``` 如果你想要将下拉框隐藏起来,可以将参数元素的显示方式设置为“只读”,并将可见性属性设置为“可见”。通过这种方式,下拉框虽然不会在报表中隐藏,但是可以将其控件设置为只读,用户就无法修改该参数元素的值。 以下是一个示例代码,展示了如何通过JavaScript代码将下拉框隐藏起来: ```javascript // 获取报表参数对象 var params = report.getReportParams(); // 获取指定参数对象 var param = params.getParam("参数名称"); // 将参数的显示方式设置为只读 param.setDisplayType("readonly"); // 将参数的可见性属性设置为可见 param.setVisible(true); ``` 需要注意的是,JavaScript代码必须在报表加载完成后执行,否则可能会出现获取不到参数对象的情况。可以使用报表设计器中的“脚本”功能来编写JavaScript代码,也可以在报表预览时通过浏览器的开发工具来执行JavaScript代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值