通过角色控制单元格可写属性
有许多客户提出需求,希望能够用润乾报表实现权限控制的功能,想实现不同角色不同ID的人访问同一张报表的时候,能够有不同的可写权限,看见的可写内容也不一样,下面我们就来制作一个简单的例子,来实现不同角色通过不同的url来访问报表时,看到的报表可写权限不同效果。
第一步,制作一张填报表。
首先连接demo数据源,并新建一张空白的填报表,内建一个数据集,内建数据集的字段以及报表的样式如下图所示:
然后添加一个参数,参数名为userID,这个参数的作用是用来判断访问的角色,进而决定单元格的可写属性,参数的具体形式和设置内容如下图所示:
第二步,设置可写表达式,实现可写属性的判断。
先在F2单元格的显示值表达式写入:map(list(“1″,”0″),list(“是“,”否“)),然后在A2单元格的填报属性-可写表达式里面写入如下表达式:if(@userID==ds1.录入人 && ds1.是否审批==’0′,true,false),具体的样式如下图所示:
同理,我们在B2,C2,D2,E2,F2单元格中也分别写入如下内容:
B2:if(@userID==ds1.录入人 && ds1.是否审批==’0′,true,false)
C2:if(@userID==ds1.录入人 && ds1.是否审批==’0′,true,false)
D2:if(@userID==ds1.录入人 && ds1.是否审批==’0′,true,false)
E2:if(@userID==ds1.录入人 && ds1.是否审批==’0′,true,false)
F2:if(@userID==ds1.录入人 && ds1.是否审批==’0′,true,false)
第三步:发布报表。
用自带的tomcat发布上面的报表,将报表的名字存为testRole.raq,然后我们分别通过下面的两个url访问这张报表:
1. http://127.0.0.1:6001/demo/reportJsp/showReport.jsp?raq=/testRole.raq&userID=11
2. http://127.0.0.1:6001/demo/reportJsp/showReport.jsp?raq=/testRole.raq&userID=22
这两个报表后面&userID=11和&userID=22的作用是传递参数userID的值,当用第一个url访问这张报表的时候,我们可以看到录入人为11的是可写的,而录入人为22的则不可写,具体的情况如下图所示:
同理,输入url为:http://127.0.0.1:6001/demo/reportJsp/showReport.jsp?raq=/testRole.raq&userID=22的时候,我们可以看到,录入人为22的单元格都是可写的,而录入人为的单元格都是不可写的。如下图所示:
这样我们就实现了通过不同的角色,传递不同的参数,来控制单元的可写属性了,客户也可以根据自己的需求,设置不同的登陆角色名,类似于例子中的userID,访问报表的时候就可以自由控制权限了。