【问题标题】:BIRT how to set/get values from itemsBIRT 如何从项目中设置/获取值
【发布时间】:2014-10-08 07:10:21
【问题描述】:

首先,是否可以仅使用 Javascript 进行开发(不使用任何 Java 函数)? 我无法从标签/表格/图表等项目中获取/设置值是否可以从 HTML 按钮项目中调用它们?

我目前正在使用 Openlayers 和 BIRT。该地图将在 BIRT 报告中,通过单击地图中的某个区域,它应该获取值并将其存储在标签等项目中。问题是如何设置/获取项目。

我尝试过使用与 Java/C# 相同的过程,其中在名为 txt1 的文本字段上获取或设置值将非常简单。 txt1.setValue("你好");我如何在 BIRT 上使用 Javascript 做同样的事情?

【问题讨论】:

  • 是的,可以通过将这些报表元素的值放入客户端变量中。您应该更准确地扩展您的要求,以便我们可以尝试给出答案。
  • 嗨,多米尼克,感谢您的回复。我已经编辑了这个问题,以便更具体。

标签: javascript html birt


【解决方案1】:

首先,您必须对以下事实感到满意:虽然 BIRT 脚本被称为“javascript”,但当 OpenLayers 是 客户端时,它实际上是一个服务器端 API > javascript API。特别是,这意味着我们不能直接从 OpenLayers 事件中访问报告项目。

我们可以通过将我们需要的所有项目值放入客户端变量中来解决此问题,以便我们稍后可以在客户端 javascript 代码中使用它们。这可以通过在您的 BIRT 报告中创建设置为“HTML”的隐藏文本元素来实现,然后将一些值存储在一个对象中。例如,this sample 就是这样工作的。

在报告的开头,我们在一个隐藏的 HTML 文本元素中初始化了一个名为“report”的客户端对象,如下所示。例如,假设我们的报告有两个参数“param1”和“param2”,我们可以使用“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 代码动态设置这些元素。

【讨论】:

    猜你喜欢
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 2020-04-05
    • 2021-03-21
    • 1970-01-01
    相关资源
    最近更新 更多