2010-10-06 75 views
0

我有一个报告,这将需要文本块(这将动态创建)从运行报告Java程序嵌入。BIRT如何插入文本动态

有没有一种方法我可以把一个文本对象到设计,然后以某种方式得到认为该对象在我的Java程序。如果这是可能的,我假设我能够将文本插入到该文本对象中。

这是最好的方法吗? 代码片段会被感激地接受。

在此先感谢。

回答

2

您可以使用Java事件处理程序轻松完成此操作。生成过程中的任何事件都可以通过JavaScript(存储在报告设计本身)或通过POJO进行修改,当需要更复杂的处理时。

添加TextItem到您的报告。这将成为您的文本块的预期目的地。您可以添加其他类型的控件并以相同的方式与它们交互,TextItem对于此特定问题似乎有意义。将任何你想要的东西添加到文本项目中,无论如何,我们都会重复从POJO中取得的值。

现在创建一个实现TextItemEventAdapter接口(这应该是在你的BIRT分布)的POJO。然后您可以选择将POJO绑定到哪个事件。 onCreate可能是最有意义的。为此,请从界面实施onCreate方法。

/* (non-Javadoc) 
* @see org.eclipse.birt.report.engine.api.script.eventadapter.TextItemEventAdapter#onCreate(org.eclipse.birt.report.engine.api.script.instance.ITextItemInstance, org.eclipse.birt.report.engine.api.script.IReportContext) 
*/ 
@Override 
public void onCreate(ITextItemInstance text, IReportContext reportContext) { 
    super.onCreate(text, reportContext); 
    text.setText(getText()); 
} 

在上面的片段中,getText()方法是在你的类的另一种方法是建立你的文本块。在这里实现您的业务逻辑。

一旦你已经建立了类,你需要将其绑定到该报告的文本项控制。在报告上,选择文本项目。在“属性”下找到“事件处理程序”。在这里,您可以将POJO添加为控件的事件处理程序。当控件呈现时,您的POJO现在将提供文本。

为了简化开发,具有Java项目,在同一个工作区的BIRT项目。这将使报告和POJO能够相互查看,从而在Eclipse内启用测试和调试。

以下是有关报告的事件和事件处理更大量的背景:http://www.eclipse.org/birt/phoenix/deploy/reportScripting.php

祝您好运!