BIRT中的全局函数和全局变量,并从元素的onRender中访问它
global function and global variable in BIRT and access it from onRender of an element
我正在做BIRT交叉表报告。在我的报告中,我需要创建一个全局数组变量,并需要根据交叉表的列数填充数组变量。我正在计算交叉表的onRender事件中的columnCount,并且我需要将此值传递给全局函数,并且从全局函数的结果需要填充全局变量。然后在其他交叉表或相同的交叉表中,我需要访问这个数组变量。
简单地说,我正在生成列名A,B,C…Z,AA,AB…等等,基于交叉表中数据元素的onRender中生成的列计数,我需要通过将此计数传递给全局函数来填充数组变量,然后函数返回作为参数接收的数字的excel名称(如1-A,2-B,3-C,....26-Z,27-AA…等),此结果被添加到数组变量中。这个数组变量将在数据元素onRender的交叉表的另一行中使用,我不能对数据集这样做,因为在交叉表中应用了一个排序函数(以克服默认的交叉表排序)。
我怎么能做到这一点,或任何其他简单的方法来处理这个?
我明白了。一个小小的粗心错误花了我4天的时间,我解决它的方法如下:
初始化报告初始化事件中的全局变量和函数。通过传递计数器值,从交叉表数据元素的onRender事件调用该函数,该函数获得该计数器值并找到其等效的excelcolumn名称并插入到全局变量中。
columnCount = 1;
counter = 1;
names=new Array();
names.push(''); /* for 0th position */
function toName(number)
{
name = "";
while(number>0)
{
modulo = (number-1)%26;
name = String.fromCharCode(65 + modulo).toString()+name;
number = parseInt((number-modulo)/26);
}
names.push(name);
}
上面的代码是在report initialize event中声明的。
然后在数据元素中将计数器值传递给函数,如下所示。然后增加计数器。
toName(columnCount);
columnCount++;
然后在我需要excel列名来设置excel公式的数据元素中,该元素的onRender方法获取计数器索引的数组值。
if(counter==columnCount)
{
counter=1;
}
this.setDisplayValue(names[counter]);
counter++;
当onRender事件导出到excel时,数据元素是如何改变的
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 将视口底部滚动到元素底部
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何使用jquery处理php循环通过元素
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 在Jquery detachment()和appendTo()之后定位元素
- 在两个元素的 onrender 事件之后执行函数
- BIRT中的全局函数和全局变量,并从元素的onRender中访问它