首先,你必须坦然面对的事实是,虽然BIRT脚本被称为“JavaScript的”,它实际上是一个服务器端API时的OpenLayers是客户端的JavaScript API。特别是,这意味着我们无法直接访问来自OpenLayers事件的报告项目。
我们可以把我们所需要的所有项目值客户端变量解决此,让我们可以在客户端的JavaScript代码中使用它们。这可以通过在BIRT报告中创建隐藏的文本元素设置为“HTML”来实现,然后将一些值存储在对象中。例如,这是this sample的工作原理。
在报告的一开始,我们在初始化下面这样一个隐藏的HTML文本元素命名为“报告”一个客户端对象。例如,让我们说,我们的报告有两个参数“参数1”和“参数2”中,我们可以利用它们存储“VALUE-OF”标签:
<script>
report={};
report.param1='<VALUE-OF>params["param1"].value</VALUE-OF>';
report.param2='<VALUE-OF>params["param2"].value</VALUE-OF>';
report.countries={};
</script>
从的OpenLayers事件
现在,您可以通过使用获得的报告参数只是表达式report.param1
注意在这个例子中,我们还初始化了一个名为“countries”的表格对象。如果我们需要访问birt表的数据字段的值,可以使用它,以便稍后在客户端JavaScript中使用它。为了实现这一点,我们在表格行中添加了另一个隐藏的HTML文本元素,存储我们想要的信息。在这个例子中我们存储相关联的表中的每个国家的数值:
<script>
report.countries['<VALUE-OF>row["countryID"]</VALUE-OF>']=<VALUE-OF>row["value"]</VALUE-OF>;
</script>
在的OpenLayers事件,从可变名为“myCountryID”我们现在可以访问由该BIRT表用表达这样提供的值report.countries [myCountryID]
关于如何从javascript设置报表元素,假设在服务器端生成birt报表是不可能的。不过,我们仍然可以使用显式标识符创建HTML文本元素,然后使用常规JavaScript代码动态设置这些元素。
是的,可以通过将这些报告元素的值放入客户端变量中。您应该更精确地扩展您的需求,以便我们可以尝试给出答案。 – Dominique 2014-10-08 07:25:57
嗨多米尼克,感谢您的回应。我已经编辑了这个问题,以便更具体。 – XScythe 2014-10-08 07:37:21