【发布时间】:2015-01-15 15:53:17
【问题描述】:
我试图(拼命地)通过 beforeFactory 中的脚本访问数据集的内容。
手头的任务是从链接库创建设计元素并将它们放置在网格的某个单元格中。除了“将它们放在网格的某个单元格中”部分之外,一切正常。
关于要创建哪个元素以及将其放置在何处的信息可在数据集 (dsDesignInformation) 中获得,该数据集包含三列:targetRow、targetColumn、targetContent。 targetContent 包含一个字符串,用于在库中查找元素。
例如:在body上放了一个网格(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 天)我的成功率为零(如 null)。
我会很高兴获得有关该主题的任何帮助或想法。
问候, 马古茨
【问题讨论】:
标签: javascript birt