`
lc90
  • 浏览: 70514 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

润乾巧妙实现双向过滤填报表

阅读更多
有些用户想完成双向的动态过滤功能,如填报项有角色和员工,它们两者是多对多的关系,一个员工可能有多个角色,一个角色有多个员工。双向过滤需要实现当先选择角色时,用户下拉框过滤出该角色下所有的员工;当先选择员工时,角色下拉框过滤出该员工拥有的所有角色。




集智数据平台填报表可以实现关联过滤的功能,该功能能方便用户进行选择项的关联筛选,用户可基于该功能完成以上需求。


下面的内容是具体的实现步骤:


1. 数据集准备:
内建数据集,记录角色和员工的对应关系。数据结果如下:



其中角色“普通员工”为所有员工都有的角色,用户“admin”拥有全部的角色。注意该角色和用户不会在下拉数据集中出现,具体实现见下文。





2. 报表模板设计



B1单元格编辑风格为下拉数据集,具体设置如下图:



从取数表达式可以看出,该下拉数据集中不会出现“普通员工”选项。该单元格的触发关联过滤单元格为D1,也就是D1选择值的变化会触发该单元格按照过滤表达式进行数据过滤。过滤关联表达式为”员工=F1.toString()”,其中F1会记录D1的选择结果,下图为F1单元格的自动计算属性定义,使用表达式D1.toString()==”"?”admin”:${D1}.toString(),在D1未选(为空)的情况下值为admin,如果D1已有选择项则F1值为D1单元格的值。注意员工admin对应的角色为全部角色,从而实现初始时全部角色下拉列表的实现。


同理B1单元格编辑风格为下拉数据集,具体设置如下图:


取数表达式为员工!=”admin”,该下拉数据集中不会出现“admin”选项。该单元格的触发关联过滤单元格为B1,也就是B1选择值的变化会触发该单元格按照过滤表达式进行数据过滤。过滤关联表达式为”角色=E1.toString()”,其中E1会记录B1的选择结果,下图为E1单元格的自动计算属性定义,使用表达式B1.toString()==”"?”普通员工“:${B1}.toString(),在B1未选(为空)的情况下值为普通员工,如果B1已有选择项则E1值为B1单元格的值。注意员工普通员工对应的员工为所有员工,从而实现初始时全部员工下拉列表的实现。



C2和E2单元格用于记录填报值,其结果分别和E1和F1结果对应,用自动计算来实现。其中C2的自动计算表达式为:E1.toString()==”普通员工“?”未选“:E1.toString(),如果E1为”普通员工”,即B1选择为空的情况下,显示为”未选”,否则和E1结果保持一致(E1和B1选择项也保持一致)。





实现效果:
角色下拉框初始效果:



员工下拉框初始效果:


选择角色后的员工下拉框过滤效果:



选择员工后的角色下拉框过滤效果:




小结:
1. 利用单元格填报属性中下拉数据集编辑风格的关联过滤表达式完成单元格间的关联过滤。
2. 因为两个填报单元格互为触发单元格,完成选择后不能再选择单元格上保留选择结果。须利用另外的两个单元格记录填报结果,如果要绑定数据库提交,更新值应取另外的这两个单元格值更新数据库。

分享到:
评论

相关推荐

    单指针域实现双向链表

    在编程领域,双向链表是一种数据结构...通过巧妙地利用节点的状态,我们可以创建一个既节省空间又具有双向功能的数据结构。这种实现方式对于理解和优化数据结构的内部工作原理非常有帮助,也是编程技巧的一种良好锻炼。

    VB代码 巧妙制作 小型财务报表

    使用VB代码巧妙制作家庭版小型财务报表,生成报表后,还具备打印和预览的功能,本程序使用VB 6.0自带的数据报表功能,轻松显示家庭财务报表的管理收支情况,VB初学者也可借本实例掌握报表的制作方法。

    巧妙实现普通网卡支持TRUNK VLAN

    巧妙实现普通网卡支持TRUNK VLAN

    Delphi 实现报表的横向分组打印

    在 Delphi 开发中,...通过巧妙地利用 QuickReport 的功能,我们可以创建出复杂的报表布局,满足特定的打印需求。在实际项目中,开发者需要根据具体的数据结构和用户界面要求进行调整,以确保报表的准确性和易读性。

    双向流水灯

    实现这种效果的关键在于巧妙地控制单片机的GPIO(General-Purpose Input/Output)引脚。GPIO可以设置为输入或输出模式,根据程序指令控制其电平状态,从而驱动LED灯。 编程中,我们需要定义一个数组来存储LED的状态...

    电子功用-可实现双向直线运动的夹心换能器式驻波超声电机

    标题中的“可实现双向直线运动的夹心换能器式驻波超声电机”是一种先进的机电一体化设备,它结合了超声技术与精密驱动技术,主要用于实现微小或精细的直线运动控制。这种电机通常应用于高精度定位、精密加工、光学...

    财税实务:巧妙分析财务报表中的各个数据-.pdf

    财税实务:巧妙分析财务报表中的各个数据 本资源摘要信息将详细介绍财税实务中巧妙分析财务报表中的各个数据的要点。通过本篇资源摘要信息,您将学习到如何从财务报表中提取有价值的信息,如何进行行业分析,如何对...

    基于Delphi SQL Server交叉报表的实现.pdf

    总结来说,基于Delphi和SQL Server实现交叉报表的关键在于巧妙地利用Delphi的内置控件和SQL Server的存储过程功能。通过编写定制的SQL逻辑,可以在不增加额外成本的情况下,实现复杂报表的生成,满足企业的各种报表...

    水晶易表巧妙实现日历控件的点选后自动隐藏

    本话题将深入探讨如何在水晶易表中巧妙地实现日历控件的点选后自动隐藏,提升报表的用户体验。 首先,我们需要了解日历控件在水晶易表中的作用。日历控件通常用于用户选择日期,为报表提供动态筛选条件。用户在报表...

    c# 报表服务

    在C#报表服务中,子报表的使用可以通过引用其他RDL(Report Definition Language)文件实现,RDL是SSRS用来定义报表结构和样式的XML语言。 创建子报表的步骤大致如下: 1. **设计子报表**:使用Report Designer...

    巧妙分析财务报表中的各个数据-会计实务之财务报表.doc

    "巧妙分析财务报表中的各个数据-会计实务之财务报表" 财务报表分析是企业财务管理的重要组成部分,能够帮助企业更好地了解自己的财务状况,进行科学的决策,提高企业的经营管理水平。下面是基于财务报表分析的知识...

    安卓转盘按钮效果巧妙实现

    "安卓转盘按钮效果巧妙实现"这个主题就是关于如何在Android应用中创建一个引人注目的交互式转盘按钮。这种效果通常用于游戏或者设置选项中,给用户提供一种新颖的交互方式。 转盘按钮的实现主要涉及到自定义View或...

    js,javascript得到一个月份的最大天数,巧妙实现

    这是我们公司的框架代码,给分,谢谢!js,javascript得到一个月份的最大天数,巧妙实现js,javascript得到一个月份的最大天数,巧妙实现js,javascript得到一个月份的最大天数,巧妙实现

    c# asp.net的mvc模式下成功使用水晶报表

    在不破坏这一结构的同时,在MVC模式下集成水晶报表需要一个更巧妙的方法。 建立自己的水晶报表是第一步,比如命名为StackingDemoRep2。接下来,我们需要在ASP.NET MVC的项目结构中的Controller文件夹里创建一个控制...

    RecyclerView 使用ItemDecoration 巧妙实现吸附效果

    本文将深入探讨如何使用ItemDecoration巧妙实现吸附效果。 首先,RecyclerView.ItemDecoration是一个接口,它提供了自定义 RecyclerView 外观的机会,包括但不限于分隔线、背景颜色、边距等。我们可以通过重写它的`...

    javascript table 增加删除行,巧妙实现

    本文将深入探讨如何巧妙地利用JavaScript来实现这个功能。 首先,我们需要了解HTML中的`<table>`元素及其相关结构。一个基本的表格由`<table>`、`<tr>`(行)、`<th>`(表头单元格)和`<td>`(数据单元格)组成。...

    ORACLE DECODE函数在中国式报表统计查询中的组合条件实现

    ### ORACLE DECODE函数在中国式报表统计查询中的组合条件实现 #### 一、引言 在Oracle数据库中,`DECODE`函数是一种非常实用的功能,主要用于条件判断并返回不同的值。它经常被用来进行简单的条件分支处理,尤其...

    Tableau-巧妙实现双柱图和折线图的组合图表

    资源内包含Tableau的twbx模板文件以及excel数据源,有需要的小伙伴可以自行下载使用,如需查看视频讲解可以访问西瓜视频:...

Global site tag (gtag.js) - Google Analytics