我有两个桌子。 我无法访问BIRT报表中内部表的 Onprepare()事件内的外部表值 row [“ Value”] 。 因此我可以使用这些值动态设置内部表列的宽度。 如何在Onprepare()事件中访问外部表的值?
没有用于列的方法。如果我把像元宽度给误差12厘米 stacktrace: org.eclipse.birt.report.engine.api.EngineException:评估脚本“ this.width =“ 12cm”;“时发生错误: 包装好的java.lang.UnsupportedOperationException:无法设置单元格宽度,请改为设置列宽。 (/ report / body / table [@ id =“ 3482”] / detail / row [@ id =“ 3485”] / cell [@ id =“ 3486”] / table [@ id =“ 98041”] / detail /行[@ id =“ 98063”] /单元格[@ id =“ 98066”] /方法[@ name =“ onCreate”]#1)
答案 0 :(得分:1)
在外部表的行中,您可以将一些行值写入变量。
在内部表中,您可以访问该变量。
编辑: 您需要一个具有全局访问范围的“变量”。一种方法是在报表的initialize()脚本中初始化变量(beforeFactory()或onPrepare()也是有效选项)
def build_myobj(version):
return Builder(version).build()
versioned_obj = build_myobj('0.0.1')
→尝试将您的innerTable脚本从onPrpare()移到onCreate()
here's a simple example report(已更新的具有动态宽度的链接示例)
在该示例中,我从外部将值a_1 = np.array([1.0, 2.0, 3.0])
a_2 = np.array([[1., 2.], [3., 4.]])
b = 2.0
np.multiply(a_1,b)
# array([2., 4., 6.])
np.multiply(a_2,b)
# array([[2., 4.],[6., 8.]])
传递给内部表。
在内部表的onCreate()中,您可以使用适当的单位来合并该值,例如。 myVar1 = 0; //has global scope
var myVar2 = 0; //has only local scope
或1 | 2 | 3
。
另外,请检查报告是否具有“固定版式”(而非“自动版式”)。
cm
edit:可以通过该内部表的onCreate()来设置内部表列的宽度而不是表本身的宽度。
in