[英]global function and global variable in BIRT and access it from onRender of an element
我正在研究BIRT交叉表報告。 在我的報告中,我需要創建一個全局數組變量,並需要根據交叉表的列數填充該數組變量。 我正在計算交叉表的onRender事件中的columnCount,並且我需要將此值傳遞給全局函數,並且從全局函數的結果中需要填充全局變量。 然后在其他一些交叉表或相同的交叉表中,我需要訪問此數組變量。
我只是根據交叉表中數據元素的onRender生成的列數來生成列名A,B,C ... Z,AA,AB ...等,我需要通過傳遞此數來填充數組變量到全局函數,然后該函數返回它作為參數接收的數字的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);
}
上面的代碼在報表初始化事件中聲明。
然后在數據元素中,按如下方式將計數器值傳遞給函數。 然后增加計數器。
toName(columnCount);
columnCount++;
然后在一個我需要excel列名來設置excel公式的數據元素中,該元素的onRender方法獲取計數器索引的數組值。
if(counter==columnCount)
{
counter=1;
}
this.setDisplayValue(names[counter]);
counter++;
這就是通過onRender事件導出到excel時如何更改數據元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.