[]
在设计时候,通过@ComboProperty注解实现的下拉框组件中的下拉选项是在开发阶段已经固定的值,添加 ICustomEditorSetting 接口,并实现 getEditorSetting 方法。可以实现自定义下拉框可选项内容的设置。
在 getEditorSetting 方法中传入了一个 IBuilderCommandContext 的参数,可以通过IBuilderCommandContext 获取当前工程的数据表相关信息、角色、云存储、认证模式、文件上传目录等相关信息。
案例:
实现初始化数据表字段的设计时表现为一个可选当前工程中的所有数据表名称的下拉框,列名的设计时表现为一个下拉框。并且在选择数据表后,列名的下拉框中的可选项为当前选中表格的所有列名。
代码如下:
@Icon("resources/Icon.png")
@Category("java服务端命令")
public class TestCustomEditorCommand extends Command implements ICommandExecutableInServerSide, ICustomEditorSetting {
@DisplayName("数据表")
private String tableName;
@DisplayName("列名")
private String columns;
private String combo;
@Override
public ExecuteResult execute(IServerCommandExecuteContext dataContext) {
return new ExecuteResult();
}
@Override
public String toString() {
return "java自定义Combo";
}
@Override
public EditorSetting getEditorSetting(String property, IBuilderCommandContext builderContext) {
Map<String, ITableInfo> map = new HashMap<>();
for (ITableInfo tableInfo : builderContext.getAllTableInfos()) {
map.put(tableInfo.getTableName(), tableInfo);
}
if("tableName".equals(property)){
return new ComboEditorSetting(map.keySet());
}
if("columns".equals(property)){
var comboEditorSetting = new ComboEditorSetting(null);
if(tableName != null && map.containsKey(tableName)){
List<String> columnNames = map.get(tableName).getColumns().stream().map(IColumnInfo::getColumnName).toList();
comboEditorSetting.setSource(columnNames);
}
return comboEditorSetting;
}
if("combo".equals(property)){
return new ComboEditorSetting(List.of(
Map.of("code",1,"value","a"),
Map.of("code",2,"value","b"),
Map.of("code",3,"value","c")
),"code","value");
}
return null;
}
}
设计器中效果:
type=note
说明:
此功能为V10.1新增的功能。