
# 1 功能介绍
与父单据体的行关联,平级展示数据,一般用来单据录入数据。子单据体是单据体的一种特例,二者的属性和视觉完全相同,只不过子单据体需要关联父单据体,当父单据体选中行改变时,会切到该行关联当子单据体数据。
# 2 控件对象
`kd.bos.form.control.SubEntryGrid`
# 3 属性说明
子单据体属性、插件代码和单据体相同,请参考[单据体](https://vip.kingdee.com/article/224093028678171392)
# 4 子单据体配置

# 5 子单据体接口介绍
## 5.1 控件编程模型
子单据体的控件编程模型为 SubEntryGrid,派生自标准单据体的控件编程模型 EntryGrid,暂未增加新的控制方法:
```java
package kd.bos.form.control;
public class SubEntryGrid extends EntryGrid {
```
## 5.2 数据模型
### 5.2.1 属性对象
子单据体在主实体模型 MainEntityType 中的属性对象是 SubEntryProp,派生自单据体的属性对象EntryProp,暂未增加新方法:
```java
package kd.bos.entity.property;
public class SubEntryProp extends EntryProp {
```
子单据体属性对象SubEntryProp关联子实体类型SubEntryType,未增加新方法:
```java
package kd.bos.entity;
public class SubEntryType extends EntryType
```
### 5.2.2 属性值
子单据体,数据结构与标准单据体相似,请参阅[标准单据体的属性值介绍](https://vip.kingdee.com/knowledge/specialDetail/218022218066869248?category=218035559762017280&id=224093028694948608)。不过,子单据体的值,是放在父单据体数据包下面的;
如果从单据数据包入手,则必须先取到父单据体行数据包,然后再从下取子单据体行集合;
如下代码演示如何在动态表单插件中,取到子单据体行数据(必须指定父行号、子行号):
```java
/**
* 取子单据体行数据包
*
* @param parentRow 父单据体行索引,必须
* @param row 子单据体行索引,必须
* @return
*/
private DynamicObject getSubEntryRow(int parentRow, int row){
DynamicObject subRowObj = null;
// 方法一:调用IEntryOperate中的方法,获取子单据体行
IEntryOperate entryOperate = this.getModel();
entryOperate.setEntryCurrentRowIndex(KEY_ENTRYENTITY, parentRow); // 指定父行号 (必须)
subRowObj = entryOperate.getEntryRowEntity(