使用JS以编程方式将排序条件添加到BIRT中的表

时间:2010-03-01 14:01:34

标签: java javascript reporting birt

我正在尝试编写一些简化表格排序的脚本,并且已经非常接近但我现在想知道我是否发现了一个错误......或者只是误解了限制。

所以我的相关代码:

var reportRunnable = reportContext.getReportRunnable();
var reportDesign = reportRunnable.getDesignInstance();
var table = reportDesign.getTable(tableName);

var sortCondition = org.eclipse.birt.report.engine.api.script.element.StructureScriptAPIFactory.createSortCondition();      
sortCondition.setKey("row[\"" + columnKey + "\"]");
sortCondition.setDirection("desc");

table.removeSortConditions();
table.addSortCondition(sortCondition);

我在类清单中的第164行收到NullPointerException: org.eclipse.birt.report.engine.script.internal.element.Listing,方法removeSortConditions ...

((org.eclipse.birt.report.model.api.simpleapi.IListing) designElementImpl).removeSortConditions();

所以上面暗示'designElementImpl'为null,进一步研究了它似乎意味着要实例化'table'对象的源代码,使用了以下构造函数:

public Table( TableHandle table );

并且提升了超类的层次结构,这意味着在DesignElement的构造函数中,以下内容返回null:

designElementImpl = SimpleElementFactory.getInstance( ).getElement(handle);

任何一个想法?我只是不能做我想做的事情吗?

提前致谢。

编辑:应该添加;我正在使用BIRT 2.5.1。

1 个答案:

答案 0 :(得分:0)

我想我现在已经对它进行了排序...我创建了一个[更简单]的新报告,没有库依赖,现在排序正常。

我也在其他论坛上发帖,所以如果有人想了解更多详情,请参阅BIRT Exchange Forums

干杯。