1
我希望通過向報告傳遞參數來創建數據集,這些報告是應該查詢的文件的名稱,以便獲取報告中正確的列和數據,我是考慮類似編輯this.queryText屬性的地方,其中「this」代表尚未創建的數據集。使用javascript創建數據集(birt)
是否有可能,如果是這樣,如何?
非常感謝。
我希望通過向報告傳遞參數來創建數據集,這些報告是應該查詢的文件的名稱,以便獲取報告中正確的列和數據,我是考慮類似編輯this.queryText屬性的地方,其中「this」代表尚未創建的數據集。使用javascript創建數據集(birt)
是否有可能,如果是這樣,如何?
非常感謝。
您可以隨時使用腳本數據集事件適配器對其進行描述。唯一的問題是報告的內容不會知道這些名稱。您需要編寫更多代碼來處理這種情況。如果創建空白報告並添加腳本數據源和沒有列的腳本化數據集,則可以將事件處理程序設置爲類似於以下內容的類:
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;
}
}