Oracle APEX 4.2实现左右联动查询
*总结主要包括*
实现目的—>实现所需要的储备—>主要界面展示—>法一(item) —> 法二(全局变量)
实现该功能目的:
在实际的后台管理系统中,有很多需要实现点击一个项目或者设备名称,然后显示该项目或者设备对应的一些进度和运营状况。方便一些非开发人员快速了解。
实现功能所需储备:
1.Oracle APEX是基于Oracle数据库的应用,所有的信息存储于数据库,所以工具就是表表表!还有你的数据库三大范式的理解。因为这个功能吧对于表之间的关系连接,id主键的应用还是需要熟悉。
2.对于cookie和session有基础了解;
实际系统主要界面展示:
功能实现方法暂时两种:
开始使用Oracle数据库的原始EMP和DEPTNO表进行举例:
表结构如下:
法一:(使用item项方法来实现)
Item项的介绍:
页面项(items)属于某一个区域,是构成区域的组件。页面项可以是隐藏的,一般用于存储数据,相当于在页面上定义了一个变量。页面项大多是可见的,显示在页面上其所属的区域内,显示形式根据用户选择可以有很多种,比如文本输入框、下拉列表、复选框、带日历的时间输入文本框等。可见的页面项主要作用是输入和输出:用户可以通过页面项输入数据,或作出选择,也可通过页面项查看程序的输出结果。
项有两个级别:页面项(page items)和应用程序项(application items)。页面项放置在某个页面上,有相关的用户界面显示属性,如显示为(Display As)、标签(Label)和标签模板(Label Template)。页面项的例子包括复选框(check box)、文本框(display as text,)、文件选择器(file browse field)、弹出式列表(popup list of values)等。 应用程序项并不属于某个特定页面,也没有显示属性。应用程序项可用作全局变量。从上图可以看出,区域Test 有个页面项:P1_DEPTNO,页面项是隐藏的,因此在页面上看不到它的存在。页面项的名字一般是根据你输入的项标签自动生成的,当然你可以修改,但一般是以“P页码_”开头,比如P1_QUOTA代表一个页面1的项。最好遵循这一命名规范以保持代码的易读性。
当用户通过页面项输入数据后,你可在应用程序中通过合适的语法来引用项的值,获取用户的输入(一种介质)。当应用程序将计算结果赋值给某个项时,新的结果将在页面刷新时自动显示出来。
法一实现步骤:
第一步————创建一个空白页
第二步————创建一个报表
增加报表之前根据页面布局,设置一下页面模板
之后在区域位置模板2上创建一个空白页,然后在这个区域上创建一个item(隐藏显示均可)——因为这个就是上面介绍的中间介质;
空白区域最后结果:
第三步————创建item项:
第四步————返回到编辑页,点击增加一个报表区域--
注释:这里的select查询语句:是一个动态匹配的语句;后续直接点击创建即可;
第五步————创建一个值列表;
注释:这个地方:使用示例2的绑定变量方法:粘贴复制过去进行更改
这个地方涉及到目标链接的代码:
这个列表显示得是工作部门,所以是DNAME
下一行代码表示:APP_ID是你的当前页码,APP_Session是这个页面会话session,
P7_TEST就是刚才创建的item项,DEPTNO target 是目标指向这个部门;
举例:当我点击这个部门,浏览器下面就会出现目标URL
点击下一步:
第六步————创建一个列表引用刚才的列表
第七步————点击运行此页——完成
法二实现步骤:
实现思路:将法一的item转变为全局变量:
怎么创建全局变量?在apex里面怎么运行的?
全局变量就是Application items 的意思,所以就是和item的存储传输变量的功能是一样的;它在App登录后就行初始化,在登录后的session中存活,等待一个接收的URL页面;
解释:
创建:点击共享组件:
其他思路与法一相同;
{{ cmt.username }}
{{ cmt.content }}
{{ cmt.commentDate | formatDate('YYYY.MM.DD hh:mm') }}