【问题标题】:Modify Row Data of the table in BIRT在 BIRT 中修改表的行数据
【发布时间】:2014-03-21 07:14:32
【问题描述】:

我想更改在 BIRT 中用于分组目的的表行中的数据。我知道如何检索该值,但我想更改渲染值,正是我想转换字符串。我在官方页面here上查看了一个示例:

if (this.getRowData().getExpressionValue(3) > 100)
    this.getStyle().backgroundColor="red";//This will only change the row instance

这有助于更改文本的样式,但我想更改文本而不是样式

var t = this.getRowData().getExpressionValue("row[colname]");
t= t.toUpperCase();  //any string transformation
this.valueExpr = t;  //this is not working

那么如何将新字符串分配给行。我在该行的 onRender 事件中编写此脚本。但它不起作用。有什么想法吗?

【问题讨论】:

标签: javascript event-handling birt


【解决方案1】:

您可以在 data 元素的 onRender 事件中实现这一点(not 在行元素上):

var newval=this.getValue().toString().toUpperCase();
this.setDisplayValue(newval);

【讨论】:

  • 问题已解决..我应该首先尝试这个东西。完美工作。谢谢你的回答。
【解决方案2】:

我不确定你想要的最终结果是什么,但是当我想修改一个值时我通常会做什么;是创建一个计算列。

在此示例中,我在列 (seAssignment) 中有一个数值,我想显示一个不在数据库中的字符串值。我可以将它添加到我的表中,就像任何现有的数据列一样,包括使用它进行分组。

  • 在 Outline 中打开数据集
  • 点击计算列
  • 给它一个名称和数据类型(字符串)

表达式

if (row["seAssignment"] ==0){
"In use"
}else if (row["seAssignment"] ==1){
"In stock"
}else if (row["seAssignment"] ==2){
"Retired (or consumed)"
}else if (row["seAssignment"] ==3){
"Awaiting receipt"
}else if (row["seAssignment"] ==4){
"Return for maintenance"
}else if (row["seAssignment"] ==5){
"Return to supplier"
}else if (row["seAssignment"] ==6){
"Missing"
}else { 
"Undefined"}

【讨论】:

  • 是的,我们可以使用计算列来实现它,但我的模板有点复杂,而且存在很多东西,所以我不能使用它,但它是一个不错的选择。多米尼克的回答对我有用。
  • IMO 使用计算列或与表达式绑定比更改 onRender 事件中的值要干净得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-22
  • 1970-01-01
相关资源
最近更新 更多