左树右视图

1.场景介绍

使用场景:表单页面布局划分,左侧树形导航展示教师姓名列,点开后下方展示教师下的学生姓名列,右侧展示学生视图列表信息,点击学生姓名右侧切换展示学生信息详情表单。导航树上可做新增、删除学生操作。

#2.操作步骤

详细步骤如下:

1.右键克隆左树右表单示例,表单名称为左树右视图。

2.将右侧分组控制中的教师表单页面容器修改绑定为学生视图,修改页面容器的字段值为studentView

3.打开表单设置,创建一个变量teacher_id

4.打开左侧导航树组件高级选项中节点被点击时事件,修改部分js代码如下:

console.log(node, "节点可用参数node")
if (node.__type == "student") {
  this.v_page_index = 1;
  this.Api.getFrameAsync("studentFrame").then(frame => {
    console.log('studentFrame', frame)
    frame.Api.loadEntity(node);
  })
}
else {
  this.v_page_index = 0;
  this.v_teacher_id= node.id
  this.Api.getFrameAsync("studentView").then(frame => {
    console.log('view', frame)
    frame.Api.doQuery();
  })
}

5.打开右侧分组控制中的学生视图资源容器高级配置,在扩展属性中新增属性定义,配置属性名为teacher_id,属性值为刚刚定义的变量v_teacher_id

6.打开学生信息表单,拖入单行文本控件,绑定关联关系字段tid,将该组件状态全部设为隐藏,打开学生视图,点击视图设置,高级设置内新增参数teacher_id,配置快速筛选条件,选择刚刚拖入的关联关系字段,设置显示状态为隐藏,默认值配置选择参数teacher_id,将学生信息表单与视图保存。

更多请参见EOS Low-Code Platform 8 

### 若依框架中实现右单表功能的方法 若依框架是一个基于Spring Boot和MyBatis Plus开发的企业级快速开发平台,其内置了许多实用的功能模块。要实现在若依框架中的右表功能,可以通过以下方式完成。 #### 1. 数据库设计 首先需要创建对应的数据库表结构来支持形数据展示。通常情况下,形数据会采用自关联的方式来存储父子关系。例如: ```sql CREATE TABLE sys_tree_table ( id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', parent_id BIGINT DEFAULT 0 COMMENT '父节点ID', name VARCHAR(50) DEFAULT '' COMMENT '名称', order_num INT DEFAULT 0 COMMENT '排序号', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (id) ); ``` 此表的设计参考了常见的形结构模式[^1]。 #### 2. 后端接口开发 在若依框架中,后端部分主要通过Controller层提供RESTful API服务。为了实现右表功能,需要分别编写获取形数据和列表数据的接口。 ##### (1)形数据接口 形数据一般用于侧菜单显示,可通过递归查询或者CTE(Common Table Expressions)等方式构建。以下是示例代码: ```java @RestController @RequestMapping("/treeTable") public class TreeTableController { @Autowired private SysTreeTableService treeTableService; /** * 获取形结构的数据 */ @GetMapping("/getTreeData") public AjaxResult getTreeData() { List<SysTreeTable> list = treeTableService.selectTreeList(new SysTreeTable()); return AjaxResult.success(treeTableService.buildTree(list)); } } ``` 上述代码实现了从数据库读取并组装成前端所需的JSON格式数据。 ##### (2)表格数据接口 右侧表格则需根据选中的节点加载对应子项或详情信息。 ```java /** * 根据父节点ID获取子项列表 */ @GetMapping("/getListByParentId/{parentId}") public AjaxResult getListByParentId(@PathVariable Long parentId){ Map<String,Object> params=new HashMap<>(); params.put("parentId",parentId); List<Map<String, Object>> result=treeTableService.queryList(params); return AjaxResult.success(result); } ``` 以上逻辑确保能够动态更新右边的内容区域。 #### 3. 前端页面布局与交互处理 利用HTML框架技术定义整体网页架构,并结合CSS样式美化界面效果;同时借助JavaScript控制DOM操作以及事件绑定等功能达成最终用户体验目标。 ##### HTML 结构 ```html <frameset cols="20%,*"> <!-- --> <frame src="/left-tree.html" /> <!-- 右侧表 --> <frame src="/right-table.html" /> </frameset> ``` 这里采用了简单的`frameset`标签划分右两栏比例为2:8的形式[^3]。 ##### CSS 样式调整 针对特定素应用定制化外观属性使其更贴合实际需求场景。 ```css /* 定义按钮基础样式 */ #btnAdd,#btnEdit{ width : 100px; height: 28px; line-height: 28px; padding-left: 5px; background-color: #ccc; cursor: pointer; border-bottom: 1px solid white; } /* 当鼠标悬停时改变背景色 */ #btnAdd:hover,#btnEdit:hover{ background-color: lightblue !important; } ``` 这些规则来源于常见UI组件设计原则[^4]。 ##### JavaScript 功能增强 最后一步就是赋予页面活力的部分啦!下面给出一段简单例子用来监听点击动作从而触发异步请求刷新右侧视图内容的操作流程。 ```javascript document.getElementById('tree').addEventListener('click', function(event){ var target=event.target||event.srcElement; while(target&&!target.dataset.id){ target=target.parentNode; } if(!target){return;} fetch(`/api/getListByParentId/${encodeURIComponent(target.dataset.id)}`) .then(response=>response.json()) .then(data=>{ document.querySelector('#tableBody').innerHTML=data.map(item=>`<tr><td>${item.name}</td></tr>`).join(''); }); }); ``` 这段脚本片段展示了如何捕获用户行为进而调用远程服务器资源的过程[^5]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值