Board logo

标题: 用父子关系的树状结构数据集作报表 [打印本页]

作者: three    时间: 2010-4-21 17:12     标题: 用父子关系的树状结构数据集作报表

我们先来看一张报表,如下所示:
[attach]218[/attach](图1)

这张报表没看上去,没什么特别,但问题是所用的数据很特别,来源如下两张数据库表:

[attach]208[/attach] (图2)          [attach]209[/attach](图3)

(图2)这是一个有id和父id字段的数据库表, 用来描述一种有层次关系的数据。(图3)是表示每个叶节点的数据(本例中的西湖区,江东区等),这时候我们想做出如(图1)所示报表效果,在杰表中该如何实现?


我们按以下步骤来进行:   

1:新建空白报表
2:添加数据集
[attach]208[/attach] 图(4

这张表展示的是部门的数据,pid 是指部门的父ip 例如 西湖区的上一级就为杭州市

3:选中数据集tree -添加视图 树节点
[attach]211[/attach]图(4

父节点字段选中pid,根id 可以看图(2)中部门的值为0 因为是字符型的所以用引号
[attach]210[/attach] 图(5

4:选中刚创建好的树节点mytree 右键 添加数据集(明细表)

[attach]209[/attach]
5:拖动mytree到报表设计区

[attach]212[/attach]
我们现在要改动表格来达到我们需要的样式

[attach]213[/attach]
[attach]214[/attach]


在上图中可以看到修改后的表格单元格中的内容比较多。下面我们一一进行解释
$.isDetail()?"":repeat("
",$.level-1)+$.name

这里的$.isDetail()?"":repeat("
",$.level-1)
表示如果是明细数据那么就按照数据的级别减一(l例如西湖区的级别是2那么显示西湖区的时候就在西湖区前面加一空格)替换成空格+$.name名称字段

6:下面进行其他的设置

[attach]215[/attach]


点击第二行的行板,然后选中标签中的RowPanel 点击打印样式-可见性-是否可见-编辑
!$.isDetail()表示当不等于明细数据的时候显示

[attach]216[/attach]

点击第三行的行板,选中标签中的RowPanel 重复以上的步骤。在公式定义中写上
$.isDetail()
表示当等于明细数据的时候显示

7:点击行板-选中标签-打印样式-可见性-是否可见

[attach]217[/attach]

编辑$.level>0
当级别小于0的时候不显示(从图2中可以看到此示例是不显示名称为部门的数据)

至此可得如图(1)所示的报表效果。

[ 本帖最后由 three 于 2010-4-22 10:34 编辑 ]




欢迎光临 杰表技术论坛 (http://jatools.com/) Powered by Discuz! 6.1.0