我試圖(絕望地)通過beforeFactory中的腳本訪問數據集的內容。Birt:訪問beforeFactory中的數據集的內容
手頭的任務是從鏈接庫創建設計元素,並將它們放置在網格的特定單元格中。除了「將它們放置在網格的某個單元中」之外,一切都可以正常工作。
有關要創建哪個元素以及將在何處放置元素的信息可在數據集(dsDesignInformation)中使用,該數據集包含三列:targetRow,targetColumn,targetContent。 targetContent包含一個字符串,用於查找庫中的元素。
例如:有一個網格放置在主體(grdMasterGrid)上,有兩行兩列。如果dsDesignInformation包含像(1,1,「testObjectName」)這樣的行,我想從鏈接庫創建元素「testObject」,並將其放在我的grdMasterGrid的第1行和第1列的交點處。
用於創建和放置元件的代碼:
importPackage(org.eclipse.birt.report.model.api);
var myLibraryHandle = reportContext.getDesignHandle().getLibrary("myLibraryName");
var myElementFactory = reportContext.getDesignHandle().getElementFactory();
// should be the objectname as defined in the dsDesignInformation
var myTargetElementHandle = myLibraryHandle.findElement("testObjectName");
var myCreatedElementHandle = myElementFactory.newElementFrom(myTargetElementHandle , "someUniqueElementName");
var myMasterGridHandle = reportContext.getDesignHandle().findElement("grdMasterGrid");
// should be target coordinates as defined in dsDesignInformation
var myTargetCellHandle= myMasterGridHandle.getCell(1,1);
myTargeCellHandle.getContent().add(myCreatedElementHandle);
具有硬編碼的目標信息使用,並放置在報告設計的beforeFactory時,這就像一個魅力。
但是我確實需要訪問dsDesignInformation的內容並將它們傳遞給上面的腳本。到目前爲止(4天),我的零成功(零)。
我很樂意爲您提供有關該主題的任何幫助或想法。
問候, maggutz
我忘了提,我檢索一個XML文件的所有數據。因此,你的代碼(就像它看起來那樣有保證)不適用於我的情況。然而,我試圖將代碼適用於我的情況,請參閱我自己的答案。 – maggutz 2015-01-20 08:50:18