gpt4 book ai didi

javascript - 在 Birt 处理程序上使用 Javascript reportContext.setPersistentGlobalVariable 方法在进程之间传递对象

转载 作者:行者123 更新时间:2023-12-02 16:22:42 29 4
gpt4 key购买 nike

我试图将变量从工厂进程传递到运行进程,在 eclipsde UI 透视图中使用 reportContext.setPersistentGlobalVariable。在数据集的onFetch()中,代码如下所示:

var flag = "hello";
reportContext.setPersistentGlobalVariable("flag", flag);

在报表设计的 beforeRender() 方法中,代码如下所示:

var flg = reportContext.getPersistentGlobalVariable("flag");
reportContext.getDesignHandle().findElement("text").setContent(flg);

应该注意的是,当我将两个片段放入两个报告设计中的 ..() 方法时,此代码是有效的。不知何故,数据无法在两个进程之间传递。

最佳答案

我能够重现与您所描述的类似的行为。请尝试在报表末尾插入动态文本元素并设置此表达式,它应该可以工作:

reportContext.getPersistentGlobalVariable("flag");

很可能您的报告正在使用独特的“RunAndRender”任务运行,而如果我们想利用 beforeRender 和 onRender 事件,我们应该使用两个单独的“Run”和“Render”任务。

在使用 Eclipse Designer 的实践中,如果我们使用 Web 查看器运行报告(“在 Web 查看器中查看报告”),则会有两个单独的任务,但如果我们直接运行导出(“以 xxx 形式查看报告”),则会有一个任务任务。

也就是说,重要的是要注意处理渲染事件很棘手:大多数时候,像您尝试在此处所做的那样更改 designHandle 元素为时已晚。例如,即使元素的“可见性”属性也无法在渲染时更改。您可以使用此元素的“onRender”事件更改文本的内容:

this.text=reportContext.getPersistentGlobalVariable("flag");

关于javascript - 在 Birt 处理程序上使用 Javascript reportContext.setPersistentGlobalVariable 方法在进程之间传递对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28959510/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com