我想通过向报告传递参数来按需创建数据集,这些参数是应该查询的文件的名称,以便在报告中获取正确的列和数据,我正在考虑编辑此内容。 queryText 属性,其中“this”代表数据集,当时尚未创建。
可能吗?如果可能的话,如何实现?
非常感谢。
最佳答案
您始终可以使用脚本化数据集事件适配器来描述它。唯一的问题是报告内容不会知道这些名字。您将需要编写更多代码来处理这种情况。如果您创建空白报表并添加脚本化数据源和不带列的脚本化数据集,您可以将事件处理程序设置为类似于以下内容的类:
package my.event.handlers;
import org.eclipse.birt.report.engine.api.script.IScriptedDataSetMetaData;
import org.eclipse.birt.report.engine.api.script.IUpdatableDataSetRow;
import org.eclipse.birt.report.engine.api.script.eventadapter.ScriptedDataSetEventAdapter;
import org.eclipse.birt.report.engine.api.script.instance.IDataSetInstance;
public class MyScriptedDataSetMeta extends ScriptedDataSetEventAdapter {
private Integer cnt=0;
private Integer cntT=3;
@Override
public boolean fetch(IDataSetInstance dataSet, IUpdatableDataSetRow row) {
if( cnt < cntT){
try{
row.setColumnValue("col1", cnt);
row.setColumnValue("col2", "hello");
row.setColumnValue("A_Column", "jjj");
cnt++;
return true;
}catch (Exception e){
}
}
return false;
}
@Override
public boolean describe(IDataSetInstance dataSet,
IScriptedDataSetMetaData metaData) {
// TODO Auto-generated method stub
metaData.addColumn("col1", Integer.class);
metaData.addColumn("col2", String.class);
metaData.addColumn("A_Column", String.class);
return true;
}
}
关于javascript - 使用 javascript 创建数据集(birt),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12782621/