使用autobig方式展現報表,無法使用contextName標簽來動態改變數據源,可以使用api直接修改報表文件,具體代碼如下
//修改數據源
String reportPath = request.getRealPath(“/reportFiles”+report);//讀取報表文件
ReportDefine rd = (ReportDefine)ReportUtils.read(reportPath);
DataSetMetaData dsmd = rd.getDataSetMetaData();
//****************************//多數據集可以添加循環與邏輯判斷
DataSetConfig dsc = dsmd.getDataSetConfig(0);//讀取數據集設置,從0開始
//****************************//可以添加客戶自己的業務邏輯
dsc.setDataSourceName(“demo”);//更改數據集對應的數據源
dsmd.setDataSetConfig(1, dsc);//保存設置
rd.setDataSetMetaData(dsmd);//保存ReportDefine對象
ReportUtils.write(reportPath, rd);//保存修改后的raq文件
這樣便修改了報表對應的數據源