我正在尝试使用sql查询通过Oracle表添加oracle APEX中的动态菜单。它将有n级的菜单(菜单将有子菜单,子菜单将有更多的菜单),不应限制在任何数目的节点。
我已经创建了带有oracle表和层次查询的动态导航菜单栏,但是序列不正确。你能帮我完成以下任务吗-
我正在附加一个示例快照,以显示我正在努力实现的目标。
请注意-我不是寻找动态菜单,这是完全Javascript驱动。
发布于 2022-12-03 20:31:21
若要使用Oracle表在Oracle APEX中创建动态菜单,并应用分层查询从表检索数据,然后使用它填充菜单项,请执行以下操作。一种常见的方法是在表中有一个父-子关系,其中每一行都有对其父行的外键引用。
下面是一个可以使用的表结构示例:
CREATE TABLE menu_items (
id NUMBER PRIMARY KEY, // uniquely identifies each menu item
parent_id NUMBER, // references the `id` of the parent menu item
title VARCHAR2(255),
link VARCHAR2(255),
sequence NUMBER // specifies the order of displaying menu items
);让我们用示例数据填充这个表:
INSERT INTO menu_items (id, parent_id, title, link, sequence) VALUES (1, NULL, 'Home', '/home', 1);
INSERT INTO menu_items (id, parent_id, title, link, sequence) VALUES (2, NULL, 'About', '/about', 2);
INSERT INTO menu_items (id, parent_id, title, link, sequence) VALUES (3, 2, 'Our Team', '/about/team', 1);
INSERT INTO menu_items (id, parent_id, title, link, sequence) VALUES (4, 2, 'Our History', '/about/history', 2);
INSERT INTO menu_items (id, parent_id, title, link, sequence) VALUES (5, NULL, 'Contact', '/contact', 3);这将创建一个包含三个项目的顶级菜单:"Home“、"About”和"Contact“。“关于”菜单将有两个子项目:“我们的团队”和“我们的历史”。
要从此表检索数据并使用它填充Oracle APEX中的菜单,可以使用分层查询:
SELECT
LEVEL AS "Level",
id AS "ID",
parent_id AS "Parent ID",
title AS "Title",
link AS "Link",
sequence AS "Sequence"
FROM menu_items
START WITH parent_id IS NULL
CONNECT BY PRIOR id = parent_id
ORDER SIBLINGS BY sequence;此查询使用CONNECT BY和START WITH子句遍历菜单项的层次结构,并使用ORDER SIBLINGS BY子句按序列列对每个级别的菜单项进行排序。
使用此查询的结果填充Oracle APEX中的菜单。例如,可以使用LEVEL列确定每个菜单项的级别,并在菜单中创建必要的缩进,并使用title和link列显示每个菜单项的文本和URL。
https://stackoverflow.com/questions/74664387
复制相似问题