用javascript(birt)创建数据集

时间:2012-10-08 13:20:11

标签: javascript reporting birt

我想通过将参数传递给报告来按需创建数据集,这些参数是应该查询的文件的名称,以便在报告中获得正确的列和数据,我想要编辑这个。 queryText属性,其中“this”表示尚未创建的数据集。

是否可能,如果可能,怎么样?

非常感谢。

1 个答案:

答案 0 :(得分:1)

您始终可以使用脚本数据集事件适配器对其进行描述。唯一的问题是报告的内容不会知道这些名称。您将需要编写更多代码来处理这种情况。如果创建空白报表并添加脚本数据源和没有列的脚本数据集,则可以将事件处理程序设置为类似于以下内容的类:

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;
}

}