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

报表动态增减列

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

报表动态增减列

应用场景

在查询报表时,可根据页面参数、过滤条件、查询结果,动态添加、删除报表列表的显示列

ps:动态增删列只支持插件实现

 

实现思路

在表单查询插件query方法中,根据页面参数、过滤条件、查询结果,创建临时标记变量,在getColumns方法中,根据临时标记变量动态添加/删除列。

 

示例

1. 动态增加列

1.1如下图所示,创建包含单价、数量字段的单据


1.2创建报表,绑定报表表单插件、报表查询插件;报表列表添加单价、数量字段,绑定数据源字段


1.3报表过滤控件添加复选框,动态添加总价列开关


2. 动态删除列

2.1 报表列表添加文本字段,标识为动态隐藏列,展示动态删除用,无需绑定数据源字段


2.2 报表过滤控件添加复选框,动态隐藏列开关


ps:动态对列进行增加和删除处理,推荐在 表单插件 的 getColumns() 方法中,在其他方法中也可实现此功能,但可能会导致其他不知名错误,增加时间成本。


插件示例代码

public class DynamicReportColumnFormPlugin extends AbstractReportFormPlugin {  
     
  } 
 
  public class DynamicReportColumnListDataPlugin extends AbstractReportListDataPlugin {  
     
     private String TAG_NAME = "dynamic_rpt_column_bill";  
     
      private String[] SELECTED_FIELD =  {"billno", "billstatus", "createtime", "pricefield",  
             "qtyfield", "unitfield"};  
     
      private static ThreadLocal<Boolean> isAddTotalColumn = new ThreadLocal<>();  
     private static ThreadLocal<Boolean>  isHideDynamicColumn = new ThreadLocal<>();  
   
  
        @Override  
     public DataSet query(ReportQueryParam queryParam, Object selectedObj) throws Throwable {  
    
        List<QFilter> searchFilterList = new ArrayList<>();  
           List<FilterItemInfo> filterItems = queryParam.getFilter().getFilterItems();  
         for (FilterItemInfo filterItem : filterItems) {  
               if ("showamountchkbox".equals(filterItem.getPropName()) && filterItem.getValue().equals(true)) {  
                    //动态添加总价列  
                SELECTED_FIELD[SELECTED_FIELD.length-1] = "pricefield*qtyfield as total";  
                isAddTotalColumn.set(true);  
            }  
   
            if ("dynamichide".equals(filterItem.getPropName()) && filterItem.getValue().equals(true)) {  
                 isHideDynamicColumn.set(true);  
             }  
        }  
  
        if (!CollectionUtils.isEmpty( queryParam.getFilter().getHeadFilters())) {  
             searchFilterList.addAll(queryParam.getFilter().getHeadFilters());  
    }  
          ORM orm = ORM.create();  
            String selectedField = StringUtil.stripChar(StringUtil.stripChar(Arrays.asList(SELECTED_FIELD).toString(), '['), ']');  
          return orm.

报表动态增减列

应用场景在查询报表时,可根据页面参数、过滤条件、查询结果,动态添加、删除报表列表的显示列ps:动态增删列只支持插件实现 实现思路在表...
点击下载文档文档为doc格式

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

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