
# 1 功能介绍
穿梭框控件用来完整展现数据,实现双栏穿梭选择框,常用于将多个项目从一边移动到另一边
# 2 控件对象
`kd.bos.form.control.TransferContainer`
# 3 视觉展示

## 3.1 列表模式
列表模式中,穿梭框左右俩框内容项都是以列表形式展开,勾选后点击右箭头可以把勾选项移动到右边框,点击左箭头可以把勾选项移动到左边框。后端可以通过发送来的数据进行默认勾选和默认禁止选择。
## 3.2 树形模式
树形模式中,穿梭框左框内容项以树形模式展开,右框以列表形式展示并且可以显示节点路径信息
# 4 属性说明
## 4.1 通用属性
>通用属性包含字段和控件的一些公有的属性,如宽高,帮助文本等等。请参考[通用属性](https://vip.kingdee.com/article/215559076720798976)
## 4.2 样式属性
>样式属性是每个控件在设计器右侧样式栏可以设置的属性,请参考[样式属性](https://vip.kingdee.com/article/252017936767406336)
## 4.3 业务属性
| 属性名 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| 设置项 | 弹框选择 | - | 设置穿梭框内框宽度和高度,还可以配置左右两个框的标题 |
| 显示风格 | 下拉 | 默认 | 配置穿梭框显示风格,分为默认风格和树形风格 |
# 5 穿梭框接口介绍
* 设置穿梭框信息
```java
*/** 可以通过插件设置穿梭框左侧的内容(列表或树形列表),以及右侧选中的节点ID数组内容。也可以获取到用户操作传输框后,穿梭框选中的节点信息*
**/*
import kd.bos.form.control.Control;
import kd.bos.form.control.TransferContainer;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.form.transfer.TransferNode;
import kd.bos.form.transfer.TransferTreeNode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.EventObject;
import java.util.List;
import java.util.Map;
public class TestPlugin extends AbstractFormPlugin {
@Override
public void afterCreateNewData(EventObject e) {
// 显示风格为默认(列表模式)
TransferContainer transferContainerDefaultStyle = this.getControl("transfercontainerap0");
List<TransferNode> transferNodeListData = new ArrayList<>(2);
transferNodeListData.add(new TransferNode(
"0", // 节点 ID
"text0", // text,节点显示内容
false // disabled,该节点是否允许选中
));
transferNodeListData.add(new TransferNode(
"1", // 节点 ID
"text1", // text,节点显示内容
true // disabled,该节点是否允许选中
));
transferContainerDefaultStyle.setTransferListData(transferNodeListData, Arrays.asList("0", "1")); // 全选
// 显示风格为树形(树形模式)
TransferContainer transferContainerTreeStyle = this.getControl("transfercontainerap1");
TransferTreeNode rootNode = new TransferTreeNode(
"root", // 节点 ID
"textRoot", // text,节点显示内容
false // disabled,该节点是否允许选中
);
rootNode.setIsOpened(Boolean.TRUE); // 展开子节点
TransferTreeNode childNode = new TransferTreeNode(
"child", // 节点 ID
"textChild", // text,节点显示内容
false // disabled,该节点是否允许选中
);
rootNode.addChild(childNode);
transferContainerTreeStyle.setTransferTreeNoteData(rootNode, Arrays.asList("child")); // 只选中子节点
}
@Override
public void click(EventObject evt) {
Control control = (Control) evt.getSource();
String key = control.getKey();
if ("buttonap".equals(key)) {
TransferContainer transferContainerDefaultStyle = this.getControl("transfercontainerap0");
// 用户操作穿梭框后可获取选中的 ID 数组
List<Object> selectedIdsDefaultStyle = transferContainerDefaultStyle.getSelectedData();
// 显示风格为默认的穿梭框选中数据格式
if (!selectedIdsDefaultStyle.isEmpty()) {
Map<String, Object> map = (Map<String, Object>) selectedIdsDefaultStyle.get(0);
String id = (String) map.get("id");
String text = (String) map.get("text");
Boolean disabled = (Boolean) map.get("disabled");
}
TransferContainer transferContainerTreeStyle = this.getControl("transfercontainerap1");
// 用户操作穿梭框后可获取选中的 ID 数组
List<Object> selectedIdsTreeStyle = transferContainerTreeStyle.getSelectedData();
// 显示风格为树形的穿梭框选中数据格式
if (!selectedIdsTreeStyle.isEmpty()) {
Map<String, Object> map = (Map<String, Object>) selectedIdsTreeStyle.get(0);
String id = (String) map.get("id");
String text = (String) map.get("text");
Boolean disabled = (Boolean) map.get("disabled");
Boolean isOpened = (Boolean) map.get("isOpened");
Boolean isChecked = (Boolean) map.get("isChecked");
}
}
}
@Override
public void registerListener(EventObject e) {
this.addClickListen