zoukankan      html  css  js  c++  java
  • Wyn BI-条件格式化-以分组为单位设置交替背景色

    (一)背景介绍
    在之前的文章中,我们介绍表格交替行背景色的实现方法,然而在报表设计过程中,我们也会遇到非固定行数间隔的交替行设置需要。比如:以一笔订单为单位,进行背景色的交替显示,如下图所示:

    左侧是表格的默认行为,以1行进行交替背景色显示。
    右侧是以订单编号为单位,进行背景色的交替显示。

    (二)相关资源
    你可以直接下载以下zip包,并在Wyn 系统管理网站的导入功能中,导入相关的报表、数据源等资源。

     报表-条件格式化-按照分组设置交替行颜色.zip (494.28 KB, 下载次数: 0)


    (三)实现方法
    实现思路,还是在报表中,通过表格来显示订单详细数据,同时,将背景色的表达式进行适当修改。
    第1步:新建RDL报表,添加表格组件
    新创建一个RDL报表,从设计器左侧添加表格组件到报表设计界面。
    同时,在设计器最右侧【数据绑定】中添加内置数据集【销售明细_报表】,然后在表格的明细行单元格分别绑定【订单编号】、【产品名称】、【购买数量】三个字段。



    第2步:预览报表设计效果
    我们在预览的时候会发现,表格默认具备交替行背景色的能力,但是,同一个订单的不同产品,并没有显示为同一个颜色,这样无法很直观的表达同一个订单购买的所有产品。


    第3步:理解交替行背景色实现原理
    表格中,实现交替行的核心思路就是,为行的背景色设置一个表达式,动态决定当前行应该显示什么颜色。
    而表格默认就有交替行颜色,也是因为我们选择了表格样式【主题色1-交替行颜色】,
    选择这个样式之后,会给表格明细行所有单元格的背景色属性设置一个表达式。

    你可以点击下图中【1】的明细行图标,然后在属性窗格中切换到【文本框】选项卡,你可以看到【颜色】属性是一个表达式:

    =IIF(RowNumber(Nothing) Mod 2, Theme.Colors(1,4), "Transparent")
    




    这个表达式的含义就是,根据当前行的行号是奇数还是偶数(RowNumber(Nothing) Mod 2),从而决定返回什么颜色。
    在理解交替行实现的核心原理之后,我们就可以动手实现基于订单编号的组交替色了。

    第4步:实现基于订单的交替背景色
    我们需要做的就是计算当前订单的显示次序是奇数,还是偶数。而得到订单显示次序的表达式为:

    RunningValue(Fields!订单编号.Value, CountDistinct)


    从而,我们修改明细行单元格背景色的表达式写法,如下:

    =IIF(RunningValue(Fields!订单编号.Value, CountDistinct) Mod 2, Theme.Colors(1,4), "Transparent")
    



    第5步:预览验证实现效果
    点击预览报表按钮,得到以下预览效果,也是我们所期望的。


    第6步:合并订单编号单元格
    为了让同一个订单的数据看起来更加直观,我们将订单编号相同的单元进行合并。
    点击明细行中【订单编号】单元格,在属性窗格中找到【自动合并】属性,并将其设置为【分组内合并】。
    点击预览,得到文章最开始实现的报表效果,如下图:



    (四)重要提示
    这篇文章中有几个功能需要注意:
    1、交替行,核心是为单元格的背景色设置为一个表达式,具体返回的颜色是动态计算出来的。
    2、RunningValue 函数的使用,具体请参考帮助文档:https://help.grapecity.com.cn/pa ... ion?pageId=37880373

    最后,如果你也有类似的使用需求,欢迎留言交流。  

  • 相关阅读:
    【LeetCode OJ】Remove Element
    【LeetCode OJ】Remove Duplicates from Sorted Array
    【LeetCode OJ】Swap Nodes in Pairs
    【LeetCode OJ】Merge Two Sorted Lists
    【LeetCode OJ】Remove Nth Node From End of List
    【LeetCode OJ】Two Sum
    【LeetCode OJ】Majority Element
    最长公共子序列问题
    php fopen与file_get_contents的区别
    PHP 技巧集合
  • 原文地址:https://www.cnblogs.com/edoo/p/13819668.html
Copyright © 2011-2022 走看看