我有一个问题,我正在研究旧版本的birt(2.5)并且它有一个标准偏差的错误,如果输入的所有值都相同,它们将返回NaN,我完全理解这一点,它我花了一些时间来确定,但我知道这是我的问题。
我现在需要的是在单元格中使条件成为零,如果它是NaN并且由于我对birt的经验有限,我不确定如何去做。
这是单元格:
<cell id="1337">
<property name="backgroundColor">#CFAFCF</property>
<property name="textAlign">center</property>
<data id="1170">
<structure name="numberFormat">
<property name="category">Fixed</property>
<property name="pattern">#,##0.00</property>
</structure>
<list-property name="visibility">
<structure>
<property name="format">all</property>
<expression name="valueExpr" type="javascript">var points = row["CELL_POINTS"];
var minPoints = row["CELL_MIN_POINTS"];
var maxPoints = row["CELL_MAX_POINTS"];
points == null && (minPoints == null || maxPoints == null)</expression>
</structure>
</list-property>
<property name="resultSetColumn">stddev</property>
</data>
</cell>
不要问这里的valueExpr是什么,我不知道他们为什么这样做,但最好不要为我而留下: - )
我无法将整个事物发布为1它是巨大而复杂的,2,它是为了工作。
这是stddev聚合
<structure>
<property name="name">stddev</property>
<text-property name="displayName">stddev</text-property>
<property name="dataType">float</property>
<simple-property-list name="aggregateOn">
<value>grpGeneric</value>
</simple-property-list>
<property name="aggregateFunction">STDDEV</property>
<list-property name="arguments">
<structure>
<property name="name">Expression</property>
<expression name="value" type="javascript">dataSetRow["ASSIGNED_POINTS"]</expression>
</structure>
</list-property>
<expression name="filterExpr" type="javascript">dataSetRow["EVAL_COUNT"] == 1</expression>
</structure>
基本上我想要的是,如果单元格数据返回NaN的值使其为0,否则使其返回值。
感谢。
答案 0 :(得分:1)
我已经通过向单元格添加onRender方法解决了这个问题
1)点击&#34;布局&#34; birt的标签 2)点击&#34;大纲&#34; birt视图的选项卡 3)单击我想要onRender方法的单元格 4)单击&#34;脚本&#34;标签 5)选择&#34; OnRender&#34;在顶部 6)添加我想要的代码,在我的情况下:
if (this.getValue().toString().toLowerCase() == "nan"){
this.setDisplayValue(0);
} else {
this.setDisplayValue(this.getValue());
}