电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

报表超链接跳转、表头字段排序

来源:金蝶云社区作者:金蝶2024-09-225

报表超链接跳转、表头字段排序

1.    报表超链接跳转开发指引

以物料收发汇总表跳转物料收发明细表为例

1.1点击物料编码超链接,跳转物料收发明细表,效果如下:


1.2 代码实现步骤如下:

报表插件大致分为表单类插件查询插件,查询插件可处理报表查询时的取数等逻辑,表单插件可处理过滤面板的控制逻辑。

1.2.1 查询时需要的字段设置为超链接显示(本例中即为物料编码字段)

报表数据源配置的扩展插件中留有扩展点,buildShowColumn方法中可设置查询后字段显示为超链接:


代码示例(可参考汇总表扩展插件

1. public final class SumRptHandle implements IReportDataHandle {  

2.     @Override  

3.     public List<AbstractReportColumn> buildShowColumn(List<AbstractReportColumn> columns, ReportDataCtx ctx) {  

4.         Set<String> showQtyCols = ctx.getShowQtyCols();  

5.         List<AbstractReportColumn> showCols = new ArrayList<>(16);  

6.         ReportColumn reportCol = null;  

7.         String field = null;  

8.         for (AbstractReportColumn col : columns) {  

9.             // 物料设置为超链接  

10.             if ("material".equals(field)) {  

11.                 reportCol.setHyperlink(true);  

12.             }  

13.         }  

14.         return showCols;  

15.     }  

16.


1.2.2 点击超链接跳转页面:

跳转逻辑需要在汇总表(新)表单插件中处理,代码示例

1. public final class SumRptForm extends AbstractReportFormPlugin implements HyperLinkClickListener{  

2.             @override  

3.             public void hyperLinkClick(HyperLinkClickEvent e) {  

4.                 String key = e.getFieldName();  

5.                 if ("material".equals(key)) {  

6.                     // 点击超链接,打开对应表单  

7.                     this.showDetailRpt(e);  

8.                 }  

9.             }  

10.               

11.             /* 

12.             * 设置跳转参数 

13.             */  

14.             private void showDetailRpt(HyperLinkClickEvent e) {  

15.                 ReportShowParameter rsp = new ReportShowParameter();  

16.                 // 设置需要打开的页面标识  

17.                 rsp.setFormId("im_detail_rpt");  

18.                 // 显示模式  

19.                 rsp.getOpenStyle().setShowType(ShowType.MainNewTabPage);  

20.                 // 设置跳转到明细表时需要设置的过滤条件,用于打开明细表时获取该参数后处理过滤  

21.                 OpenDetailParam param = this.buildOpenDetailParam(e);  

22.                 rsp.setCustomParam(OpenDetailParam.class.getName(), SerializationUtils.toJsonString(param));  

23.                 this.getView().showForm(rsp);  

24.             }  

25.             /* 

26.             * 设置跳转到明细表时需要设置的过滤条件,用于过滤明细表 

27.             */  

28.             private OpenDetailParam buildOpenDetailParam(HyperLinkClickEvent e) {  

29.                 OpenDetailParam param = new OpenDetailParam();  

30.                 RptForm RptForm = this.getRptForm();  

31.                 param.setOrgId(RptForm.getOrgIds());  

32.                 DynamicObject data = this.getModel().getDataEntity();  

33.                 param.setDateFrom(data.getDate("startdate"));  

34.                 param.setDateTo(data.getDate("enddate"));  

35.                 param.setGroupStandard(data.getDynamicObject("groupstandard").getLong("id"));  

36.                 param.setGroupFrom(RptUtil.getBaseDataObjIds(this.getView(), "groupfrom"));  

37.                 DynamicObject baseData = data.getDynamicObject("groupto");  

38.                 if (baseData != null) {  

39.                     param.setGroupTo(baseData.getPkValue());  

40.                 }  

41.   

42.                 param.setMaterialFrom(RptUtil.getBaseDataObjIds(this.getView(), "materialfrom"));  

43.                 baseData = data.getDynamicObject("materialto");  

44.                 if (baseData != null) {  

45.                     param.setMaterialTo(baseData.getPkValue());  

46.                 }  

47.   

48.                 param.setMaterialType(data.getString("materialtype"));  

49.                 param.setShowQtys(data.getString("showqtycols"));  

50.                 param.setIncludeSubmit(data.getBoolean("include_submit"));  

51.                 param.setIncludeUnupdate(data.getBoolean("include_unupdate"));  

52.                 param.setIncludeInQty(data.getBoolean("display_in"));  

53.                 param.setIncludeOutQty(data.getBoolean("display_out"));  

54.                 param.setIncludeInitBalQty(data.getBoolean("display_init_bal"));  

55.                 FilterGrid grid = (FilterGrid)this.getControl("commonfs");  

56.                 FilterCondition condition = grid.getFilterGridState().getFilterCondition();  

57.                 param.setCondition(condition);  

58.                 this.reBuildReportParms(param, e);  

59.                 return param;  

60.             }  

61.     }  

62. }

跳转到明细表后,明细表的处理逻辑分为两步:

1)需要获取到汇总表跳转时设置的过滤条件,设置到明细表过滤条件中;

2)调用明细表查询逻辑;

这部分逻辑需要在明细表(新)表单插件处理,代码示例

1. public final class DetailRptForm extends AbstractReportFormPlugin{  

2.     @override  

3.     public void afterCreateNewData(EventObject e) {  

4.         // 获取参数,根据param判断是否为汇总表超链接打开  

5.         OpenDetailParam param = this.getOpenDetailParam();  

6.         if (param == null) {  

7.             this.init4DirectOpen();  

8.         } else {  

9.             // 打开明细表方式为汇总表超链接打开  

10.             this.init4LinkOpen(param);  

11.

报表超链接跳转、表头字段排序

1. 报表超链接跳转开发指引以物料收发汇总表跳转物料收发明细表为例1.1点击物料编码超链接,跳转物料收发明细表,效果如下:1.2 代码实...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信