前提:使用报表模板,在报表插件中,继承AbstractReportFormPlugin,非报表页面数据源填值
1. 报表列表目前可能不支持多选基础资料赋值,若仅需要显示多选基础资料内容,则可在报表列表中放一个文本字段,在代码中取到值,拿到多选基础资料所选项名称进行拼接,再放入文本字段中。
其中,多选基础资料取值,可以考虑直接用BusinessDataServiceHelper查询出字段,用DynamicObjectCollection取到字段值,用
List<Long> mul = MulBaseDataUtils.getPkValuesByMulData(multiPro);
取到多选基础资料值id集合
另外,赋值可考虑addNew方法
DynamicObject setMul = multi.addNew(); setMul.set("fbasedataid_id", baseDataId.getPkValue());
其中,multi是所取到的DynamicObjectCollection字段,baseDataId是所取到的fbasedataid_id值
以上的赋值过程可在processRowData方法中使用(手动填值可用),该方法会二次进入,第一次进入无值,第二次进入时会带入查询出的行数据
public void processRowData(String gridPK, DynamicObjectCollection rowData, ReportQueryParam queryParam)
gridPK是报表列表标识,rowData是所查出的所有行数据,遍历rowData来进行赋值
2. 报表列表在有多页签的情况下,需在afterQuery(ReportQueryParam queryParam)方法中进行各个页签底下的报表加载,如:
3.不用报表数据源,通过插件手动填值
首先,写好查询插件(继承AbstractReportListDataPlugin),在query()方法:
public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable
用DataSet查询出值,return dataSet
注意:查询出的数据列名必须和报表列表字段名相同且一一对应(用sql方式查的话可自己设定列名如 t.fbillno billno)
若不能或者不好取出的数想要赋值,可考虑按(1)中processrowData方法赋值
以上方法不一定在任何场景都适用,具体问题具体分析
推荐阅读