树形单据体
# 1 功能介绍
树形单据体是单据体的一种特例,会将单据体以父子层级的样式去展示。其中在设计时的属性和单据体是一样的,行数据中包含id和pid,用来决定数据之间的父子关系。未展开的节点展示时异步加载下级数据。
# 2 控件对象
`kd.bos.form.control.TreeEntryGrid`
# 3 视觉展示
![image.webp](/download/01009d5de57a933a45e2af8aeb92f38d00e7.webp)
# 4 属性说明
树形单据体基础的属性、插件代码和单据体相同,请参考[单据体](https://vip.kingdee.com/article/224093028678171392)
# 5 数据配置
* 前端通过插入数据来构造树形单据体数据时,单据需要配置两个操作:新增分录和插入分录
* 可以由后端直接构造树形单据体数据
![tree.webp](/download/01006d16fc9fa1674c09b588c5defedb042d.webp)
# 6 树形单据体接口介绍
## 6.1 控件编程模型
### 6.1.1 控件编程模型定义
树形单据体的控件编程模型为TreeEntryGrid,派生自EntryGrid,定义如下:
```java
package kd.bos.form.control;
public class TreeEntryGrid extends EntryGrid
```
### 6.1.2 控件方法清单
TreeEntryGrid除了继承父控件EntryGrid的方法,还提供了一些树形单据体特别的控制方法:
| 方法 | 说明 |
| --- | --- |
| setCollapse | 展开、收起全部行 |
| collapse | 折叠指定行 |
| expand | 展开指定行 |
### 6.1.3 控件方法的使用
**1)setCollapse**
* 方法介绍:根据参数要求,展开、或者收起全部行。
* 方法定义:
```java
/**
* 展开/收起全部行
*/
@Override
public void setCollapse(boolean isCollapse)
```
* 参数说明:
```java
boolean isCollapse :设置为true,则折叠全部行;设置为false,展开全部行
```
* 应用示例:
```java
// 展开全部行
TreeEntryGrid grid = this.getView().getControl(Key_TreeEntry);
grid.setCollapse(false);
```
**2)collapse**
* 方法介绍:折叠指定行,子行也自动折叠。
* 方法定义:
```java
/**
* 折叠/收起行
*
* @param row 行索引
*/
@KSMethod
public void collapse(int row)
```
* 参数说明:
```java
int row:行索引
```
* 应用示例:
```java
// 折叠指定行(子行也会自动折叠)
TreeEntryGrid grid = this.getView().getControl(Key_TreeEntry);
int rowIndex = this.getModel().getEntryCurrentRowIndex(Key_TreeEntry);
grid.collapse(rowIndex);
```
**3)expand**
* 方法介绍:展开指定行,子行也自动展开。
* 方法定义:
```java
/**
* 展开行
*
* @param row 行索引
*/
@KSMethod
public void expand(int row)
```
* 参数说明:
```java
int row:行索引
```
* 应用示例:
```java
// 第二种方法:展开指定行及其子行
TreeEntryGrid grid = this.getView().getControl(Key_TreeEntry);
int rowIndex = this.getModel().getEntryCurrentRowIndex(Key_TreeEntry);
grid.expand(rowIndex);
```
## 6.2 数据模型
### 6.2.1 属性对象
树形单据体在主实体模型 MainEntityType 中的属性对象是 TreeEntryProp,派生自单据体的属性对象EntryProp,暂未增加新的控制方法:
```java
package kd.bos.entity.property;
public class TreeEntryProp extends EntryProp {
```
树形单据体属性对象TreeEntryProp关联子实体类型TreeEntryType,未增加新方法,但是,会向子实体模型中,强制注册一个属性对象pid,用来记录父行内码值:
```java
package kd.bos.entity;
public class TreeEntryType extends EntryType{
```
### 6.2.2 属性值
树形单据体,数据结构与标准单据体相似,请参阅标准单据体的属性值介绍。
在树形单据体行数据包中,固定多了一个隐藏的列(pid),记录父行的标识(id)。
即树形单据体数据包中,固定有如下两列:
* id:本行标识;
* pid:父行标识;如果是顶级行,pid为0或者null。
## 6.3 单据体数据操作接口
单据体数据操作接口 IEntryOperate提供的方法,也适用于树形单据体,只是对其中部分方法,针对树形单据体进行了特别的处理。
下文介绍经过特别处理的方法,其他方法,请参阅标准单据体数据操作接口IEntryOperate介绍章节。
### 6.3.1 方法清单
**1)createNewEntryRow**
* 方法介绍:为树形单据体添加顶级行,仅设置行标识id的值,不设置父行标识pid的值。
* 方法定义:
```java
public int createNewEntryRow(String entrykey)
```
* 参数说明:
```java
String entrykey:树形单据体标识
```
* 应用示例:
```java
this.getModel().createNewEntryRow(Key_TreeEntry);
```
**2)insertEntryRow**
* 方法介绍:为指定树形单据体行,添加新的子行。
* 方法定义:
```java
int insertEntryRow(String entrykey, int row);
```
* 参数说明:
```java
String entrykey:树形单据体标识;
int row:行标识。系统会在此行下面,增加一个子行,排在全部子行的最后面
```
**3)deleteEntryRow**
* 方法介绍:删除树形单据体行之前,判断出有子行,禁止删除。
* 方法定义:
```java
void deleteEntryRow(String entryKey, int rowIndex);
```
* 参数说明:
```java
String entrykey:树形单据体标识;
int row:需要删除的行标识。如果此行下有子行,则删除出错,提示有子行;
```
## 6.4 插件事件
树形单据体提供的插件事件,与标准单据体一致,无须特别介绍。
树形单据体
# 1 功能介绍树形单据体是单据体的一种特例,会将单据体以父子层级的样式去展示。其中在设计时的属性和单据体是一样的,行数据中包含id和...
点击下载文档
本文2024-09-23 00:40:59发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-141045.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章