2012-10-08 66 views
1

我希望通過向報告傳遞參數來創建數據集,這些報告是應該查詢的文件的名稱,以便獲取報告中正確的列和數據,我是考慮類似編輯this.queryText屬性的地方,其中「this」代表尚未創建的數據集。使用javascript創建數據集(birt)

是否有可能,如果是這樣,如何?

非常感謝。

回答

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

}