
# 1 功能介绍
树形单据体是单据体的一种特例,会将单据体以父子层级的样式去展示。其中在设计时的属性和单据体是一样的,行数据中包含id和pid,用来决定数据之间的父子关系。未展开的节点展示时异步加载下级数据。
# 2 控件对象
`kd.bos.form.control.TreeEntryGrid`
# 3 视觉展示

# 4 属性说明
树形单据体基础的属性、插件代码和单据体相同,请参考[单据体](https://vip.kingdee.com/article/224093028678171392)
# 5 数据配置
* 前端通过插入数据来构造树形单据体数据时,单据需要配置两个操作:新增分录和插入分录
* 可以由后端直接构造树形单据体数据

# 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 中