07技术太卷我学APEX-动态菜单+URL传参数给页面

news2025/1/11 14:20:34

07技术太卷我学APEX-动态菜单+URL传参数给页面

0 应用场景

《技术太卷我学APEX》收集的项目越来越多,我想把【类】【子类】加到导航菜单栏,点击不同的分类菜单栏,对列表进行过滤,也可以全部浏览,如下图:
在这里插入图片描述

1 Apex导航菜单基础

Apex的导航菜单分静态和动态菜单。静态菜单是固定不变的Apex列表,动态菜单根据sql查询结果动态变化。
参阅 某书 大挪移的分享 《Oracle APEX实现动态导航菜单》
导航菜单列表需要8项数据分别为 :

项目说明备注
LEVEL_VALUE表示几级菜单项,1表示一级菜单项,2表是二级菜单项,以此类推必须有值
LABEL_VALUE表示菜单项显示的文本必须有值
TARGET_VALUE表示点击菜单项之后要链接到的页面必须有值
IS_CURRENT表示是不是当前选中的菜单项,官方文档的说法是这个地方可以设置NULL,或者’YES’,‘NO’,设置为NULL的时候被点击的菜单项会高亮显示还没搞明白咋设置,先都null
IMAGE_VALUE使用Font APEX图标库里class名
IMAGE_ATTR_VALUE未知null即可
IMAGE_ALT_VALUE未知null即可
DISPLAY_ORDER表示菜单自上而下的显示顺序查询的时候一定要通过该字段进行排序,排过序之后,APEX就知道你定义的二级菜单到底应该归属到哪个一级菜单之下,即自动把二级菜单归属到离它最近的上一条记录中的一级菜单之下

2 创建菜单视图

2.1 基础数据

在这里插入图片描述
k_class 为一级菜单要显示的文本,k_subclass为二级菜单要显示的文本。

2.2 创建视图v_menu加上显示序号

视图v_menu代码如下:

CREATE OR REPLACE FORCE EDITIONABLE VIEW "V_MENU" ("M1", "K_CLASS", "M2", "K_SUBCLASS") AS 
  select d.m1, s.k_class,rownum + d.m1 as m2,s.k_subclass
from (select distinct k_class,k_subclass from apex_learn order by k_class,k_subclass ) s
left join 
(select rownum*1000 as m1, m.k_class from (select distinct k_class from apex_learn order by k_class ) m) d on d.k_class = s.k_class

视图的输出结果:
在这里插入图片描述
这里采用了 oracle 排序后的 rownum,编码后符合Apex的导航菜单的规则。

2.3 创建视图 v_nav_menu 加上Apex导航菜单的其它数据项

视图V_nav_menu代码:

CREATE OR REPLACE FORCE EDITIONABLE VIEW "V_NAV_MENU" ("LEVEL_VALUE", "LABEL_VALUE", "TARGET_VALUE", "IS_CURRENT", "IMAGE_VALUE", "IMAGE_ATTR_VALUE", "IMAGE_ALT_VALUE", "DISPLAY_ORDER") AS 
  select 1 as LEVEL_VALUE,'首页' as LABEL_VALUE,'f?p=&APP_ID.:1:&SESSION.::&DEBUG.::::' as TARGET_VALUE,
  	'' as IS_CURRENT,'fa-home' as IMAGE_VALUE,'' as IMAGE_ATTR_VALUE,'' as IMAGE_ALT_VALUE, 10 as DISPLAY_ORDER
	from dual
union all
  select distinct 1 as LEVEL_VALUE, k_class as LABEL_VALUE, 'f?p=&APP_ID.:2:&SESSION.::&DEBUG.::' || 'KV_CLASS,KV_SUBCLASS:' || k_class || ',' as TARGET_VALUE,  
	'' as IS_CURRENT,'fa-table' as IMAGE_VALUE,'' as IMAGE_ATTR_VALUE,'' as IMAGE_ALT_VALUE,
	m1 as DISPLAY_ORDER  from v_menu
union all
select distinct 2 as LEVEL_VALUE, k_subclass as LABEL_VALUE,'f?p=&APP_ID.:2:&SESSION.::&DEBUG.::' || 'KV_CLASS,KV_SUBCLASS:' || k_class || ',' || k_subclass as TARGET_VALUE, 
	'' as IS_CURRENT,'fa-clipboard-list' as IMAGE_VALUE,'' as IMAGE_ATTR_VALUE,'' as IMAGE_ALT_VALUE,
	m2 as DISPLAY_ORDER  from v_menu
union all 
  select 1 as LEVEL_VALUE, '全部列表' as LABEL_VALUE, 'f?p=&APP_ID.:2:&SESSION.::&DEBUG.::' || 'KV_CLASS,KV_SUBCLASS:' || ',' as TARGET_VALUE,  
	'' as IS_CURRENT,'fa-table' as IMAGE_VALUE,'' as IMAGE_ATTR_VALUE,'' as IMAGE_ALT_VALUE,
	100 as DISPLAY_ORDER  from dual
union all 
select 1 as LEVEL_VALUE,'管理' as LABEL_VALUE,'f?p=&APP_ID.:10000:&SESSION.::&DEBUG.::::' as TARGET_VALUE,
  	'' as IS_CURRENT,'fa-user-wrench' as IMAGE_VALUE,'' as IMAGE_ATTR_VALUE,'' as IMAGE_ALT_VALUE, 10000 as DISPLAY_ORDER
	from dual
order by DISPLAY_ORDER

视图v_nav_menu的查询结果:

要点说明:
display_order 的编号顺序很重要,二级菜单紧跟在所在一级项下。
Target_Value: f?p=&APP_ID.:2:&SESSION.::&DEBUG.::KV_CLASS,KV_SUBCLASS:SQL工作室,
前半部分固定套路,【f?p=&APP_ID.:2:&SESSION.::&DEBUG.::】不用动,注意冒号:的不能少。
后半部分【KV_CLASS,KV_SUBCLASS:SQL工作室,】为url传递给页面2的参数名和参数值,这里传了2个参数相当于KV_CLASS=SQL工作室 & KV_SUBCLASS:空值,页面接收这两个参数,并在sql里引用。

3 创建动态菜单并设置使用

Step1 打开共享组件-导航菜单-创建一个动态列表
在这里插入图片描述
Step 2 共享组件-用户界面-用户界面属性-设置导航菜单为【太卷导航菜单】

Step 3 到这里动态菜单就可以也页面上出来了。如下图:
在这里插入图片描述

4 URL参数传递给页面并在SQL里引用

Setp 1 打开页面2增加2个页面隐藏项KV_CLASS和KV_SUBCLASS,注意名称要和URL的参数名称相同,如下图:
在这里插入图片描述
改一下标识名称,其它都默认即可。

Setp 2 列表数据源绑定引用KV_CLASS和KV_SUBCLASS
在这里插入图片描述
数据源SQL语法如下:

select "P_ID","K_CLASS","K_SUBCLASS","S_TITLE","KEY_WORD","S_TEXT",
sys.dbms_lob.getlength("B_FILE")"B_FILE","S_NOTE","F_USER","DATE_TIME",
"B_FILE_NAME","B_FILE_MIME_TYPE"
from "APEX_LEARN"
--where k_class = nvl(v('KV_CLASS'),k_class) and k_subclass = nvl(v('KV_SUBCLASS'),k_subclass)
where k_class = nvl(:KV_CLASS,k_class) and k_subclass = nvl(:KV_SUBCLASS,k_subclass)
order by "K_CLASS","K_SUBCLASS"

引用在Where子句,用两种绑定引用方式 v(‘KV_CLASS’) 或 :KV_CLASS

nvl(v(‘KV_CLASS’),k_class) 参数为空时可查询全部。

4 最后效果

在这里插入图片描述
可查询全部,也可以按一级菜单筛选查询,也可以按二级菜单删选查询。

在线DEMO : https://apex.oracle.com/pls/apex/r/blma/learn_apex

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/180726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA SE复习(第1章 Java概述)

本文笔记来自硅谷柴林燕老师的笔记 只为自己看笔记方便使用 不做他用 目录 第1章 Java概述 1.1 Java语言发展历史(记关键点) 1.2 Java语言特点(后面需要关注和体会) 1.3 Java语言跨平台原理(理解) 1…

4. 网络编程之TCP编程

1. 《计算机网络编程》 我们接触网络编程,肯定是要对网络编程的一些专业术语及基本理论知识是要有所认知的。python网络编程无非是在这些基础理论知识之上给我们提供了一些方便实用的网络库来供我们使用。尽管做了非常底层的封装,并且给我们暴露了上层的…

java IO流之缓冲流详解

缓冲流概述 缓冲流也称为高效流或者高级流。之前我们学习的字节流、字符流可以成为基本流。 作用:缓冲流自带缓冲区、可以提高基本字节流、字符流读写数据的性能。 分类: BufferedInputStream -->字节缓冲输入流 BufferedOutputStream–>字节缓冲输…

ch1_1计算机系统概论

1. 内容安排 1.1 概论 1.2 计算机系统的硬件结构 存储器,I/O 输入与输出;系统总线;CPU 1.3 第三篇 CPU 中央处理器中,所包含的内容: ALU, CUCPU 内部互连寄存器 1.4 CU CU : control uni…

最新虚幻5引擎(UE5)游戏性能的影响详解

Unreal Engine 5 是由 Unreal Engine 公司开发的一款游戏引擎。5 代表引擎的主要版本号。它专为创建多人在线游戏、手机游戏、高端游戏和虚幻应用程序而设计。从图中可以看出,随着场景复杂度的增加,UE5的内存占用会逐渐增加。当然,这并不意味…

Redis简介、数据类型和命令

1 Redis 简介Redis 是一个高性能的 key/value 数据库。它是完全开源免费的,并且遵守 BSD 协议。1.1 Redis 特点不仅支持 key/value 类型的数据,也支持 list,hash,set,zset 等等数据结构。支持持久化,可以把内存数据保存到磁盘上,重…

高并发异步多线程处理例子

用户请求流程 问题点 tomcat 线程资源占满,由于tomcat线程资源有限,每个请求都会经由tomcat线程处理,阻塞至web层处理完才能回收再利用。web层分发至后端服务可能会扩大几倍甚至数百倍的,譬如用户发起请求1w/s,到后端…

JavaEE10-Spring Boot配置文件

目录 1.配置文件作用 2.配置文件的格式 为配置文件安装提示插件 2.1. .properties(旧版,默认的) 2.1.1.基本语法 PS:配置文件中使用"#"来添加注释信息,2种添加方式: 2.1.2.缺点分析 2.2. .yml&#…

阿里“云开发“小程序(uniCloud)

博主ps: 网上资料少的可怜,哎,腾讯云涨价了,论服务器,我肯定选的阿里,再着你们对比下uniCloud的报价就知道了,如果有钱就另当别论了。 所以这片博文,博主试过之后,先抛出…

Git速成指南

文章目录版本管理工具概念版本管理工具介绍版本管理发展简史SVN(SubVersion)GitGit工作流程图Git安装基本配置为常用指令配置别名(可选)解决GitBash乱码问题Git常用命令获取本地仓库基础操作指令查看修改的状态(status)添加工作区…

[翻译]PostgreSQL中的WAL压缩以及版本15中的改进

[翻译]PostgreSQL中的WAL压缩以及版本15中的改进从以开始就一直在尝试对WAL进行不同级别的压缩。自2016年以来内置功能(wal_compression)就一直存在,几乎所有备份工具都会在传递到备机前对WAL进行压缩。但现在是时候再看看内置的wal_compress…

呦~,这不 SVG 映射反爬么,这你都会?厉害厉害 | 案例 25

在正式学习本篇博客前,先要了解一下什么是 SVG(Scalable Vector Graphics),它是一种矢量图形格式,可以用来在网页上创建可伸缩的图形。 使用 SVG 技术实现反爬虫的方法有以下几种: 验证码:使用…

imx6ull Linux使用设备树配置LED

我们基于寄存器的方式已经编写了LED驱动,实现点亮/熄灭LED,但是你有没有发现一个问题,就是假设LED修改了一个GPIO,那么需要对应的修改寄存器代码,非常繁琐,而且随着改板次数增加,那么会带来一个…

从零开始的数模(五)插值与拟合

目录 一、概念 二、 插值 2.1方法 2.2MATLAB实现 例题1 ​编辑例题2 2.3python实现 2.3.1例题一的python解法 2.3.2二维网格节点插值 例题四 三、拟合篇: 3.1MATLAB实现 3.2python实现 一、概念 二、 插值 2.1方法 2.2MATLAB实现 在MATLAB中提供了一些…

带滤波器的PID控制仿真-2(M语言)

被控对象为三阶传递函数:低通滤波器为:采样时间为1ms,噪声信号加在对象的输出端。分三种情况进行:M1 时,为未加噪声信号;M2时,为加噪声信号未加滤波;M3时,为加噪声信号加滤波。阶跃响应结果如图1&#xff5…

【论文精读】KD-MVS

今天读的是发表在ECCV2022上的自监督MVS文章,作者来自于旷视科技和清华大学。 文章链接:arxiv 代码链接:https://github.com/megvii-research/KD-MVS 目录Abstract1. Introduction2. Related work3. Methodology3.1 Self-supervised Teacher …

51单片机七人多数表决器仿真设计( proteus仿真+程序+报告+讲解视频)

51单片机七人多数表决器仿真设计( proteus仿真程序报告讲解视频) 仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0033 51单片机七人多数表决器仿真设计视频讲解1.主要功能:2.仿真3.…

Java:Mybatis的使用

一、Mybatis的概述 MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发。 MyBatis中文官网:https://mybatis.org/mybatis-3/zh/getting-started.html 二、Mybatis快速入门 1、创建user表,添加数据 create database mybatis; use mybati…

英语语法大全

文章目录一、主语1、名词、代词和动词做主语2、主语从句做主语,谓语动词用单数3、主语从句练习二、谓语动词1、谓语动词种类2、主谓一致三、宾语1、单宾语2、双宾语3、复合宾语4、宾语从句四、定语1、定语从句2、定语从句的翻译五、状语1、分词做状语2、独立主格结构…

42.Isaac教程--超像素

超像素 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 超像素是一组外观相似的相连像素。 超像素分割将图像分成数百个不重叠的超像素(而不是数千或数百万个单独的像素)。通过使用超像素,您可以在更有意义的区…