子单据体
# 1 功能介绍
与父单据体的行关联,平级展示数据,一般用来单据录入数据。子单据体是单据体的一种特例,二者的属性和视觉完全相同,只不过子单据体需要关联父单据体,当父单据体选中行改变时,会切到该行关联当子单据体数据。
# 2 控件对象
`kd.bos.form.control.SubEntryGrid`
# 3 属性说明
子单据体属性、插件代码和单据体相同,请参考[单据体](https://vip.kingdee.com/article/224093028678171392)
# 4 子单据体配置
![zipeizhi.webp](/download/0100af19e242c3ff42dfa6c6a7426ca61928.webp)
# 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(KEY_SUBENTRYENTITY, row); // 取指定行数据包
// 方法二:自行到单据数据包中,取子单据体行
DynamicObject billObj = this.getModel().getDataEntity(true);
// 先取单据体行集合,之后取单据体行数据包
DynamicObjectCollection parentRowObjs = billObj.getDynamicObjectCollection(KEY_ENTRYENTITY);
DynamicObject parentRowObj = parentRowObjs.get(parentRow);
// 从单据体行数据包中,取子单据体行集合
DynamicObjectCollection subRowObjs = parentRowObj.getDynamicObjectCollection(KEY_SUBENTRYENTITY);
subRowObj = subRowObjs.get(row);
return subRowObj;
}
```
## 5.3 单据体数据操作接口
单据体数据操作接口IEntryOperate提供的方法,同样适用于子单据体。
但在调用IEntryOperate方法之前,必须先指定子单据体的父单据体行号,否则处理的数据行会错位。
动态表单插件,可以使用如下示意代码,获取 IEntryOperate 接口实例,之后调用其方法:
```java
IEntryOperate entryOperate = this.getModel();
entryOperate.setEntryCurrentRowIndex(KEY_ENTRYENTITY, parentRow); // 必须先指定父行号
subRowObj = entryOperate.getEntryRowEntity(KEY_SUBENTRYENTITY, row); // 取指定行数据包
```
## 5.4 插件事件
子单据体提供的[插件事件](https://vip.kingdee.com/article/228922061182734592),与标准单据体一致,无须特别介绍。
子单据体
# 1 功能介绍与父单据体的行关联,平级展示数据,一般用来单据录入数据。子单据体是单据体的一种特例,二者的属性和视觉完全相同,只不过...
点击下载文档
本文2024-09-23 00:41:00发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-141046.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章