期望实现通过维度、指标两个列表参数联动查询下面的表1,完成选择对应项的时候,表1显示对应数据
脚本怎么写?【列表参数1为维度、列表参数2为度量、脚本写在变化时运行】
表1.binding.clearCols();
var lens=列表参数1.getSelectedObjects().length
//表1.binding.clearCols();
for(var i=0;i<列表参数2.getSelectedObjects().length;i++){
表1.binding.addCol(i,new MeasureCol(SUM,new BCol(列表参数2.getSelectedObjects()[i],DOUBLE,false),null));
var loc=new Locator(["Sum_利润"],CELL,DETAIL);
表1.setFormat(loc,DECIMAL_FORMAT) //设置格式
表1.setFormatPattern(loc, "#,##0.##%")
}
for(var i=0;i<lens;i++)
{
var colname=列表参数1.getSelectedObjects()[i];
var bcolState = new BCol(""+colname+"",STRING,false);
var colState = new DimCol(bcolState);
表1.binding.addCol(i,colState);
}
同时表格中选择字段有什么注意事项,比如表达式字段是否可引用,对应的表格列名如何调整,表格数字格式、位置等如何调整。
(表达式字段可以引用,维度和聚合分开在不同的列表参数中)(列名可以在数据库处理好别名,绑定的时候就是绑定的别名)(绑定的位置是根据脚本执行顺序来的,以上脚本是维度在度量前,可以看一下for循环这一块)
在实际脚本测验中,总是报错,而且表格列名总是回归原始字段名称,无法显示修改后列名;无法调整数字格式、背景色等。(格式和背景色都需要提前在for循环绑定之后设置好,写在脚本中)
var loc=new Locator(["Sum_利润"],CELL,DETAIL);
表1.setFormat(loc,DECIMAL_FORMAT) //设置格式
表1.setFormatPattern(loc, "#,##0.##%")
(如果要单独绑定后设置别名,维度字段不支持脚本设置,可以看下这个帖子如何绑定后设置别名,先转度量再做别名设置)
动态绑定时度量字段可以至脚本设置别名,维度字段不能设置 需要以创建度量的方法来实现。
脚本:
var bcol1 = new BCol("PRODUCT",STRING,false); //创建底层字段
var ccol1= new MeasureCol(NONE,bcol1,null); //创建度量字段并设置聚合类型为空。
ccol1.col = bcol1;
ccol1.view = "产品"; //设置别名
表1.binding.addCol(0, ccol1)
var bcol = new BCol("COGS",INTEGER,false); //创建底层字段
var ccol = new MeasureCol(SUM, bcol, null); //创建度量字段并设置汇总类型SUM
ccol.col = bcol;
ccol.view = "别名-价值"; //设置别名
表1.binding.addCol(1, ccol)//绑定表格
|