CommandResult
activeRecord
activeRecord命令旨在模拟ActiveRecord()函数的效果,要成功实现该方法,首先应该实现数据源的ActiveRecord()方法
方法签名
result.activeRecord();
方法入参
- 无
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//模拟客户端点击row事件 执行 当前数据源的 activeRecord
result.activeRecord();
return result;
}
addTask
addTask 增加一个Task命令 如 增加一个ClientRecordRemove命令
方法签名
result.addTask();
方法入参
- String task:CommandTaskCmd 命令
示例代码
public CommandResult buttonOK_Button(CommandArg arg ){
CommandResult result = new CommandResult ();
//增加一个ClientRecordRemove命令 用于画面记录删除
result.addTask(CommandTaskCmd.ClientRecordRemove)
return result ;
}
alert
进行一次弹框提示 弹框样式为默认样式 如下例:点击按钮 触发弹框提示
方法签名
result.alert();
方法入参
- String info:提示文本内容
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//输出一个弹框 线上 '提示内容'
result.alert("提示信息");
return result;
}
appendCommandResult
在当前Result命令后面继续拼接一个Result 命令 一般用于多方法嵌套时 对CommandResult的整合
方法签名
result.appendCommandResult();
方法入参
- CommandResult result:CommandResult 对象
示例代码
public CommandResult buttonOK_按钮名 (CommandArg arg ){
CommandResult result = new CommandResult();
CommandResult result2 = CommnadUtil.util.doDIveiceUolt();
//使用appendCommandResult 拼接 CommandResult 命令
result.appendCommandResult(result2);
return result ;
}
bindEditorStyle
设置编辑框的样式条件。 设置时,会先清空原有的样式条件,不叠加条件 一般用于 对特殊数据的强调 (例如:学生年龄大于10岁时 学生姓名加红等)
方法签名
result.bindEditorStyle();
方法入参
- String editorName:需要被设置样式的 editor 一般为 Form_xxx._editorName
- EditorStyle style:样式设置对象 也可以传 List
示例代码
//画面初始化之前 当 学生的年龄大于10的时候 设置学生的姓名字段的背景颜色 字体大小和粗细
public CommandResult beforeInit(CommandArg arg) {
CommandResult result = new CommandResult();
//新建一个EditorStyle对象 用于设置 字段样式
EditorStyle editorStyle = new EditorStyle();
//新建一个 RecordCondition 用于设置 记录条件
RecordCondition condition = new RecordCondition();
//增加条件 当 学生年龄 大于10 的时候 出发
condition.addItem(new RecordConditionItem(Student._Age, ">10"));
editorStyle.setRecordCondition(condition);
//设置颜色
editorStyle.setBackgroundColor(0xFFB6C1);
//设置字体加粗
editorStyle.setFontWeight("bold");
//设置字体大小
editorStyle.setFontSize(18);
//使用 bindEditorStyle 命令
result.bindEditorStyle (Form_Student._Student_Name, editorStyle);
return result;
}
bindRecordConditionTask
当前记录满足指定条件时执行相应的CommandResult,一般常用于替代LockField描述复杂的控制,如作为clientActiveRecord方法的返回值 (例如ItemBOMVersion数据源的父级数据源是BOMTable,如果要设置RecordConditionItem条件为BOMTable的某个字段等于某个值时,需要设置“new RecordConditionItem(..BOMTable._XXX,"XXXXX")”)
方法签名
result.bindRecordConditionTask();
方法入参
- RecordConditionTask task:RecordConditionTask 对象
示例代码
//画面数据行单击的时候 ItemBOMVersion 表的DimSelection的值 等于 20 的时候执行 true的条件 是的ItemBOMVersion_ItemDim字段可以被编辑 否则 执行false 条件 使得 ItemBOMVersion_ItemDim 字段不能被编辑
public CommandResult clientActiveRecord(CommandArg arg) {
CommandResult result = new CommandResult();
//新建 一个 RecordConditionTask 对象 用于执行 task任务
RecordConditionTask conditionTask = new RecordConditionTask();
//新建 一个 RecordCondition 对象 用于设置 记录条件
RecordCondition recordCondition = new RecordCondition();
//设置 单个条件 DimSelection 字段 值 =20
RecordConditionItem conditionItem = new RecordConditionItem(ItemBOMVersion._DimSelection,"=20");
recordCondition.addItem(conditionItem);
conditionTask.setRecordCondition(recordCondition);
CommandResult objectResult = new CommandResult();
objectResult.updateControlAllowEdit(Form_BOMTable._ItemBOMVersion_ItemDim, false);
//设置 条件达成时 执行 的 CommandResult 命令
conditionTask.setTrueCommandResult(objectResult);
CommandResult objectDimResult = new CommandResult();
objectDimResult.updateControlAllowEdit(Form_BOMTable._ItemBOMVersion_ItemDim, true);
//设置 条件达成时 执行 的 CommandResult 命令
conditionTask.setFalseCommandResult(objectDimResult);
result.bindRecordConditionTask(conditionTask);
return result;
}
bindRowStyle
设置表格行的样式条件。设置时,会先清空原有的样式条件,不叠加条件
方法签名
result.bindRowStyle();
方法入参
- String dataGridName:需要被设置样式的 dataGird 一般为 Form_xxx._dataGridName
- EditorStyle style:样式设置对象 也可以传 List
示例代码
//画面初始化之前 当 Course 表记录 CourseId 等于 3 的时候 整条记录 改变背景颜色 和字体样式
public CommandResult beforeInit(CommandArg arg) {
CommandResult result=new CommandResult();
List<RowStyle> rowStyles = new ArrayList<>();
RowStyle rowStyle = new RowStyle();
//设置 记录体条件
rowStyle.setRecordCondition(new RecordCondition().addItem(new RecordConditionItem(Course._CourseId, "3")));
//设置 背景色
rowStyle.setBackgroundColor(0xF4A460);
rowStyles.add(rowStyle);
//使用bindRowStyle 命令
result.bindRowStyle(_DataGrid1, rowStyles);
return result;
}
buttonOK
模拟客户端操作,点击按钮,传按钮控件名称
方法签名
result.buttonOK();
方法入参
- String buttonName:需要被执行单击事件的 按钮名称
示例代码
// 点击按钮 执行 Button_delay 按钮里的代码逻辑
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.buttonOK(_Button_delay);
return result;
}
clearTasks
清空tasks并设置其为一个新的空列表
方法签名
result.clearTasks();
方法入参
- 无
示例代码
public CommandResult buttonOK_按钮名(CommandArg arg) {
CommandResult result = new CommandResult();
result.alert("我是第一个");
result.alert("我是第二个");
result.alert("我是第三个");
result.clearTasks();
result.alert("删除了前面3个,只显示第四个");
return result;
}
clientRecordAdd
将已存在于数据库的一条记录,添加到客户端。 注意:即使在参数中传入了groupAlias,仍建议在有多个数据源时在此方法后补充.setGroup(groupAlias)
方法签名
result.cilentRecordAdd();
方法入参
- Class formClass:Form 的 class 比如 Form_Student.class
- String groupAlias:数据源的别名 一般为 Form_xxx.__Dsxxx 如 Form_CommandTaskCmdList.DS_StudentDetails
- Long recId:添加数据的 recId 也可以传 List
- ClientRecordAddLocation location:插入字段的位置 默认是数据源最后 可选 First,Last,Next,Prev
示例代码
public CommandResult buttonOK_ClientAddRecord(CommandArg arg) {
CommandResult result = new CommandResult();
GongqiSession.ttsbegin();
//往数据源插入一条记录
StudentDetails stu = StudentDetails.newInstance();
stu.init();
stu.setStudentId(UUID.randomUUID().toString());
stu.insert();
GongqiSession.ttscommit();
//使用 clientRecordAdd 命令 把这条记录插入到Form_CommandTaskCmdList画面的StudentDetails数据源的最后一条
result.clientRecordAdd(Form_CommandTaskCmdList.class, Form_CommandTaskCmdList.__DS_StudentDetails,
stu.getRecId()).setGroup(Form_CommandTaskCmdList.__DS_StudentDetails);
return result;
}
clientRecordRefresh
将已存在于数据库的多条记录为准,刷新客户端的记录。如果客户端对应的记录存在则刷新,如果不存在则不做处理 注意:即使在参数中传入了groupAlias,仍建议在有多个数据源时在此方法后补充.setGroup(groupAlias)。当画面上有多个数据源,且刷新的数据源不是主数据源时,必须setGroup(groupAlias),指定具体的数据源
方法签名
result.clientRecordRefresh();
方法入参
- Class formClass:Form 的 class 比如 Form_Student.class
- String groupAlias:数据源的别名 一般为 Form_xxx.__Dsxxx 如 Form_CommandTaskCmdList.DS_StudentDetails
- Long recId:刷新数据的 recId 也可以传 List
或者 Long[]
示例代码
//开启事务 找到StudentDetails表 RecId 是 432 的记录 修改 这条记录的 Remark 和 Remark2字段 然后 执行clientRecordRefresh命令 刷新客户端记录
public CommandResult buttonOK_ClientRecordRefresh(CommandArg arg) {
CommandResult result = new CommandResult();
//开启事务
GongqiSession.ttsbegin();
//查找数据库数据
StudentDetails studentDetails = DAOHelper.findByRecId(
StudentDetails.class, 432L, true);
//更新字段
studentDetails.setRemark(RandomUtil.randomValue());
studentDetails.setRemark2(RandomUtil.randomValue());
studentDetails.update();
//提交事务
GongqiSession.ttscommit();
//刷新客户端记录
result.clientRecordRefresh(Form_CommandTaskCmdList.class,
Form_CommandTaskCmdList.__DS_StudentDetails,
studentDetails.getRecId()).setGroup(__DS_StudentDetails);
return result;
}
clientRecordRemove
在客户端数据源中移除对应recId的记录,其功能类似RecordDelete相似,但这里只是在客户端进行删除,数据库中还保留该条记录,下一次执行查询的时候还能够显示该条记录
方法签名
result.clientRecordRemove();
方法入参
- Long recId:删除数据的 recId 也可以传 List
或者 Long[]
示例代码
//移除当前选中记录
public CommandResult buttonOK_按钮名(CommandArg arg) {
CommandResult result = new CommandResult();
if (null != arg.getCurrentRecord(false)) {
List<Long> list = new ArrayList<Long>();
list.add(arg.getCurrentRecord(false).getRecId());
result.clientRecordRemove(list);
}
return result;
}
[!IMPORTANT]
以上代码是画面上删除当前选中的一条记录,如选中多条记录,可通过arg.getSelectedRecords()将所选记录取出,取到每一条记录的RecId将其添加到list中,之后仍然是将list作为参数传进result.addTask(CommandTaskCmd.ClientRecordRemove)里。 这里的删除记录只是为了操作的方便,可以与导出数据合用,将核心数据导出,暂时无关的数据可以用此方法删除,并且不会改动数据库
closeForm
关闭画面,如存在formClosing,将会执行。具体可用作某页面的关闭按钮
方法签名
result.closeForm();
方法入参
- 无
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.closeForm();
return result;
}
doCloseForm
强制关闭画面,不再执行formClosing
方法签名
result.doCloseForm();
方法入参
- 无
示例代码
public CommandResult formClosing(CommandArg arg) {
CommandResult result=new CommandResult();
result.doCloseForm();
return result;
}
contextMap
改变客户端存储的contextMap 当type==CLEAR,则key、value会被忽略 当type==PUT,则key、 value应按实际传入 当type==REMOVE,则value会被忽略,在当前画面的各个方法中可以使用。获取contextMap中存储的值,可用arg.contextMap.get(key)
方法签名
result.doCloseForm();
方法入参
- String type:类型 一般 写 ContextMapArg.PUT,ContextMapArg.CLEAR,ContextMapArg.REMOVE
- String key:存放在map 里面 键
- String value : 存放在map里对应key的值
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.contextMap(ContextMapArg.PUT, "key", "value");
return result;
}
dimAdjustFormDataSourceField
对维度的FormDataSourceField进行控制
方法签名
result.dimAdjustFormDataSourceField();
方法入参
- DimAdjustFormDataSourceField adjustFormDataSourceField:DimAdjustFormDataSourceField 对象 里面可存放 mapLabel mapVisible 和 mapSort
示例代码
//数据源的维度控制
public void dataSourceDimControl (CommandResult result, String formId, String refId, String refField) {
//根据formId 获取到 FOT form对象
GOT_Form form = (GOT_Form) GOTHelper.getEntity(formId);
//根据 form 对象 获取到 数据源列表
List<FormDataSource> formDataSources = form.getFormDataSources();
DimAdjustFormDataSourceField adjustFormDataSourceField = new DimAdjustFormDataSourceField();
Map<String, Map<String, Boolean>> mapVisible = new HashMap<>();
Map<String, Map<String, String>> mapLabel = new HashMap<>();
Map<String, Map<String, String[]>> mapSort = new HashMap<>();
// 不同数据源 根据条件判断 不同的 维度 显隐性 标签 和 排序
for (FormDataSource formDataSource : formDataSources) {
String dataSourceName = formDataSource.getName();
List<FormDataSourceField> dataSourceFields = findDataSourceDimFields(formDataSource);
Map<String, Boolean> dimVisible = new HashMap<>();
Map<String, String> dimLabel = new HashMap<>();
Map<String, String[]> dimSort= new HashMap<>();
for (FormDataSourceField dataSourceField : dataSourceFields) {
DimFormControlConfigLine dimControlLine =
DimFormControlConfigLine.util().find(DimFormControlConfigLine.class,
refId, formId, refField, dataSourceField.getId(), DimControlFormNodeType.DataSource);
if (dimControlLine == null || StringHelper.isBlank(dimControlLine.getDimControlFormGroupId())) {
continue;
}
handleDataSourceDim(dimVisible, dimLabel, dimSort, dataSourceField, dimControlLine);
}
mapVisible.put(dataSourceName, dimVisible);
mapLabel.put(dataSourceName, dimLabel);
mapSort.put(dataSourceName, dimSort);
}
adjustFormDataSourceField.mapLabel = mapLabel;
adjustFormDataSourceField.mapVisible = mapVisible;
adjustFormDataSourceField.mapSort = mapSort;
//使用dimAdjustFormDataSourceField 命令 执行
result.dimAdjustFormDataSourceField(adjustFormDataSourceField);
}
dimSortFormItem
对维度的FormItem 进行排序
方法签名
result.dimSortFormItem();
方法入参
- String fieldGroupName:画面FieldGroup 名称
- String[] sorts:排序数组 数组下标就是顺序
示例代码
public void dimRuleSort(CommandResult result, String formId, String refId, String refField) {
GOT_Form form = (GOT_Form) GOTHelper.getEntity(formId);
// 找到FormDesign是维度的节点
List<FormItem_FieldGroup> designDims = findDimFormItems(form);
//列表字段的维度控制
for (FormItem_FieldGroup fieldGroup : designDims) {
String formDimGroupId = findDimControlFormGroupId(refId, formId, refField, fieldGroup);
if (StringHelper.isBlank(formDimGroupId)) {
continue;
}
String componentId = findComponentIdByFieldGroup(fieldGroup);
if (StringHelper.isBlank(componentId)) {
continue;
}
GOT_DataTypeComponent component = (GOT_DataTypeComponent) GOTHelper.getEntity(componentId);
List<DimFormControlRule> lists = DimFormControlRule.util().findByComponentId(DimFormControlRule.class, formDimGroupId, component.getId());
String[] sorts = sortDimValue(lists, component.getArrayItems().size());
result.dimSortFormItem(fieldGroup.getName(), sorts);
}
}
dS_Allowadd
更新数据源的AllowAdd值,控制数据源是否可以被执行新增操作。Arg参数可传Map
方法签名
result.ds_AllowAdd();
方法入参
- Boolean allow:true 和false
示例代码
public CommandResult buttonOK_button(CommandArg arg) {
CommandResult result = new CommandResult();
Map<String,Boolean> map = new HashMap<String,Boolean>();
//设置数据源Test1 不允许编辑
result.ds_AllowAdd(false).setGroup(__DS_Test1);
return result;
}
[!NOTE]
需要注意的是,Designer设计器中设置属性的优先级高于二次开发中的代码操作,因此,在Designer中设置值为false时,二次开发中将其值改为true是无效的
dS_AllowAttchment
更新数据源的AllowAttachment值,控制数据源是否可以被执行相关的附件操作。Arg参数可传Map
方法签名
result.dS_AllowAttchment();
方法入参
- Boolean allow:true 和false
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//设置数据源Test1 不允许使用附件功能
result.ds_AllowAttachment(false).setGroup(__DS_Test1);
return result;
}
[!NOTE]
在这里如果需要设置AllowAttchment为true的话,必须同时设置AllowQuery的值为true
dS_AllowDelete
更新数据源的AllowDelete值,控制数据源是否可以被执行删除操作。Arg参数可传Map
方法签名
result.dS_AllowDelete();
方法入参
- Boolean allow:true 和false
示例代码
public CommandResult buttonOK_button(CommandArg arg) {
CommandResult result = new CommandResult();
//设置数据源Test1 不允许删除
result.ds_AllowDelete(false).setGroup(__DS_Test1);
return result;
}
dS_AllowEdit
更新数据源的AllowEditor值,控制数据源是否可以被执行编辑操作。Arg参数可传Map
方法签名
result.dS_AllowEdit();
方法入参
- Boolean allow:true 和false
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//设置数据源Test1 不允许编辑
result.ds_AllowEdit(false).setGroup(__DS_Test1);
return result;
}
dS_AllowExport
更新数据源的AllowExport值,控制数据源是否可以被执行导出操作。Arg参数可传Map
方法签名
result.dS_AllowEdit();
方法入参
- Boolean allow:true 和false
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//设置数据源Test1 不能导出
result.ds_AllowExport(false).setGroup(__DS_Test1);
return result;
}
dS_AllowQuery
更新数据源的AllowQuery值,控制数据源是否可以被执行查询操作。Arg参数可传Map
方法签名
result.dS_AllowQuery();
方法入参
- Boolean allow:true 和false
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//设置数据源Test1 不能查询
result.ds_AllowQuery(false).setGroup(__DS_Test1);
return result;
}
dS_AllowSave
更新数据源的AllowSave值,控制数据源是否可以被执行保存操作。Arg参数可传Map
方法签名
result.ds_AllowSave();
方法入参
- Boolean allow:true 和false
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//设置数据源Test1 不能保存
result.ds_AllowSave(false).setGroup(__DS_Test1);
return result;
}
ds_AttachmentAllowDelete
更新数据源的附件删除值,控制数据源附件是否可以被删除
方法签名
result.ds_AttachmentAllowDelete();
方法入参
- Boolean allow:true 和false
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//设置数据源Test1 附件不能删除
result.ds_AttachmentAllowDelete(false).setGroup(__DS_Test1);
return result;
}
ds_AttachmentAllowRename
更新数据源的附件重命名,控制数据源附件是否可以被重命名
方法签名
result.ds_AttachmentAllowRename();
方法入参
- Boolean allow:true 和false
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//设置数据源Test1 附件不能重命名
result.ds_AttachmentAllowRename(false).setGroup(__DS_Test1);
return result;
}
ds_AttachmentAllowUpload
更新数据源的附件上传,控制数据源附件是否可以上传
方法签名
result.ds_AttachmentAllowUpload();
方法入参
- Boolean allow:true 和false
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//设置数据源Test1 附件不能上传
result.ds_AttachmentAllowUpload(false).setGroup(__DS_Test1);
return result;
}
ds_AttachmentAllowVisible
更新数据源的附件可见,控制数据源附件是否可以被看见
方法签名
result.ds_AttachmentAllowVisible();
方法入参
- Boolean allow:true 和false
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//设置数据源Test1 附件不能可见
result.ds_AttachmentAllowVisible(false).setGroup(__DS_Test1);
return result;
}
ds_FieldUpdateAllowEdit
更新数据源字段allowEditor值,控制数据源字段是否可以编辑 参数传指定数据源 和 Map
方法签名
result.ds_FieldUpdateAllowEdit();
CommandTask gongqi.erp.gotmodel.form.remote.CommandResult.ds_FieldUpdateAllowEdit(String dataSource, Map<String, GOT_Property_AllowEdit> allowEdits)
方法入参
- String dataSource:数据源名称 一般 是 Form_xx._Dsxxx 如Form_User.__DS_SysUser
- Map
allowEdits:map key 是 数据源字段名称 可以用 表名加. 加字段名 ,GOT_Property_AllowEdit 可选 OnlyOnCreate,Never ,Always
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
Map<String,GOT_Property_AllowEdit> editorAllowEditor = new HashMap<>();
editorAllowEditor.put(SysUser._UserName,GOT_Property_AllowEdit.OnlyOnCreate);
//设置SysUser数据源 UserName 字段 只有在创建时才能编辑
result.ds_FieldUpdateAllowEdit(__DS_SysUser, editorAllowEditor);
return result;
}
ds_FieldUpdateAllowVisible
更新数据源字段visible值,控制数据源字段是否可见 参数传指定数据源 和 Map
方法签名
result.ds_FieldUpdateAllowVisible();
方法入参
- String dataSource:数据源名称 一般 是 Form_xx._Dsxxx 如Form_User.__DS_SysUser
- Map
editorVisible:map key 是 数据源字段名称 可以用 表名加. 加字段名 ,
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
Map<String,Boolean> editorVisible = new HashMap<>();
editorVisible.put(SysUser._UserName,false);
//设置SysUser数据源 UserName 字段 不可见
result.ds_FieldUpdateAllowVisible(__DS_SysUser, editorVisible);
return result;
}
ds_FieldUpdateDisplayLength
更新数据源字段displayLength值,控制数据源字段在画面上的显示长度 参数传指定数据源 和 Map
方法签名
result.ds_FieldUpdateDisplayLength();
方法入参
- String dataSource:数据源名称 一般 是 Form_xx._Dsxxx 如Form_User.__DS_SysUser
- Map
editorDisplayLength:map key 是 数据源字段名称 可以用 表名加. 加字段名
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
Map<String,Integer> editorDisplayLength = new HashMap<>();
editorDisplayLength.put(SysUser._UserName,20);
//设置SysUser数据源 UserName 字段 显示长度是 20 字符
result.ds_FieldUpdateDisplayLength(__DS_SysUser, editorDisplayLength);
return result;
}
ds_FieldUpdateLabel
更新数据源字段label值,控制数据源字段在画面上的显示标签 参数传指定数据源 和 Map
方法签名
result.ds_FieldUpdateLabel();
方法入参
- String dataSource:数据源名称 一般 是 Form_xx._Dsxxx 如Form_User.__DS_SysUser
- Map
editorLabel:map key 是 数据源字段名称 可以用 表名加. 加字段名
示例代码
public CommandResult buttonOK_按钮名(CommandArg arg) {
CommandResult result = new CommandResult();
Map<String,String> editorLabel = new HashMap<>();
editorLabel.put(SysUser._UserName,"姓名");
//设置SysUser数据源 UserName 字段 显示标签是 姓名
result.ds_FieldUpdateLabel(__DS_SysUser, editorLabel);
return result;
}
ds_FieldUpdateShowDecimal
更新数据源字段showDecimal值,控制数据源字段在画面上的显示的小数位数 参数传指定数据源 和 Map
方法签名
result.ds_FieldUpdateShowDecimal();
方法入参
- String dataSource:数据源名称 一般 是 Form_xx._Dsxxx 如Form_User.__DS_SysUser
- Map
editorShowDecimal:map key 是 数据源字段名称 可以用 表名加. 加字段名
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
Map<String,Integer> editorShowDecimal = new HashMap<>();
editorShowDecimal.put(SysUser._AutoLogout,2);
//设置SysUser数据源 AutoLogout 字段 显示小数位数是 2
result.ds_FieldUpdateShowDecimal(__DS_SysUser, editorShowDecimal);
return result;
}
executeQuery
模拟客户端操作,执行查询,可传Group参数,可传Group(即DataSource的名字)。如果不传,则默认为当前Grouop。具体可与UpdateCurrentQuery、UpdateFormQuery或SetControlProperty等合用,实现页面的查询并进行更新
方法签名
result.executeQuery();
方法入参
- 无
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//重新执行数据源StudentInfo 查询
result.executeQuery().setGroup(__DS_StudentInfo);
return result;
}
fadeInfo
以淡入淡出效果显示信息,可传Arg参数。FadeInfo适用于对一般操作进行提示,如对操作成功的提示等不会涉及系统危险的提示,相比之下,Alert则更适合于提示危险操作或弹窗显示数据
方法签名
result.executeQuery();
方法入参
- String info : 提示内容
- FadeInfoArg infoarg:FadeInfoArg 对象 可以设置其他参数 如 字体色等
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//传字符串
result.fadeInfo("提示信息");
return result;
}
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
FadeInfoArg arg0 = new FadeInfoArg();
//背景颜色
arg0.bgColor = 0x000000;
//字体颜色
arg0.labelColor = 0xFFFFFF;
//内容
arg0.label = "提示信息";
//是否在屏幕中间显示
arg0.center = true;
//持续时间
arg0.duration = 2000L;
//圆角角度
arg0.cornerRadius = 20L;
//暂停时间
arg0.pause=100L;
//传FadeInfoArg对象
result.fadeInfo(arg0);
return result;
}
fetchAll
模拟客户端操作,执行查询全体,可传Group参数,指定查询数据的Group,默认为当前Group
方法签名
result.fetchAll();
方法入参
- 无
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.fetchAll();
return result;
}
fileDownload
下载文件
方法签名
result.fileDownload();
方法入参
- DownLoadArg downLoadArg:DownLoadArg 对象 可设置 url 文件路径 和 defaultName 文件名称
- String url:文件路径 下载文件的相对路径,相对于GongqiERP/resource/账套,如果想要相对于GongqiERP的tmp目录,则应写路径@tmp/XXX(中间不写账套名)
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//下载 GongqiERP/resource/dynamic 下面 Test/a.png
result.fileDownload("Test/a.png");
return result;
}
fileUpload
上传文件,须传Arg参数,参数内容是上传文件的相对路径,相对于GongqiERP/resource/帐套名,如果想要相对于GongqiERP的tmp目录,则应写路径@tmp/XXX(中间不写账套名)。除了上传文件路径path,还可传提示框标题title和提示信息info,控制文件上传时提示框的显示信息
方法签名
result.fileDownload();
方法入参
- FileUploadArg fileUploadArg:FileUploadArg 对象
- String callBack : 回调方法名称 当前form上的某个方法名称
- String info:提示信息
- Integer maxSize:现在文件上传的最大大小
- String titile:标签
- String sizeLimitInfo:超出大小的提示信息
- String type :文件类型
- String url:上传文件路径相对路径,相对于GongqiERP/resource/账套,如果想要相对于GongqiERP的tmp目录,则应写路径@tmp/XXX(中间不写账套名)
- String url:文件路径 下载文件的相对路径,相对于GongqiERP/resource/账套,如果想要相对于GongqiERP的tmp目录,则应写路径@tmp/XXX(中间不写账套名)
- String titile:标签
- String info:提示信息
- String callBack : 回调方法名称 当前form上的某个方法名称
示例代码
public CommandResult buttonOK_FileUpload(CommandArg arg) {
CommandResult result = new CommandResult();
//URL,Title,info,Callback
result.fileUpload("test/", "选择文件", "测试上传", "fileUploadBack");
return result;
}
同时,文件上传还支持回调方法,回调方法中可以获取到上传文件的文件名。回调方法传入的参数必须是CommandArg,返回值必须是CommandResult
//上传文件回调方法
public CommandResult fileUploadBack(CommandArg arg) {
CommandResult result = new CommandResult();
result.fadeInfo("上传文件名为:"+arg.argObject);
return result;
}
focusIn
将焦点定位到指定的control,如果该control不可见,则不做任何处理 仅适用于Editor、DataGrid、Button、ButtonMenu,须传Arg参数,参数为控件名称,参数类型为String
方法签名
result.focusIn();
方法入参
- String controlName:画面元素名称 FormItem的名字
示例代码
public CommandResult afterInit(CommandArg arg) {
CommandResult result = new CommandResult();
//当前画面 New_Name FormItem
result.focusIn(_New_Name);
return result;
}
formCmd
调用其他方法,须传Arg参数,参数内容是被调用的方法的名称,被调用的方法有一定限制,调用的方法返回值类型必须为CommandResult,传入的参数类型必须为CommandArg。被调用的方法必须与当前方法在同一个类中。可传Group
方法签名
result.formCmd();
方法入参
- String methodName:窗体上的 方法名
- Object methedArg:数据传输
示例代码
public CommandResult buttonOK_FormCmd(CommandArg arg) {
CommandResult result = new CommandResult();
result.formCmd("fetch","123");
return result;
//如果要传值到formCmd指向的方法中,可调用formCmd(java.lang.String methodName,java.lang.Object methodArg)
//methodArg - 相关参数,可以在后续传回的CommandArg.argObject中
}
public CommandResult fetch(CommandArg arg) {
// arg.argObject ,若要用 传过来的第二个参数
CommandResult result=new CommandResult();
List<TestTmpTable> list = new ArrayList<TestTmpTable>();
TestTmpTable t = new TestTmpTable();
t.init();
t.setA_TableField("abc");
t.setA_TableField1(123);
list.add(t);
t = new TestTmpTable();
t.setA_TableField("林林");
t.setA_TableField1(1243);
list.add(t);
result.tmpRecordAdd(list).setGroup(Form_CommandTaskCmdList.__DS_TestTmpTable);
result.fadeInfo("点击此按钮,调用了FormCmd方法添加左下角临时表数据");
return result;
}
jS
调用JS,须传Arg参数,参数是JS语句,须要注意java中的各种转义字符
方法签名
result.formCmd();
方法入参
- String js:js 内容
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
String tt = "window.alert(\"JS语句\")";
result.js(tt);
return result;
}
locateToRecord
定位到指定的记录,可传指定记录的RecId或者传RecordCursorType定位。下面代码为跳转下条记录RecordCursorType有几种枚举First(第一条),Last(最后一条),Next(下一条),NextPage(下一页),Prev(上一条),PrevPage(上一页) 类似于工具栏上的按钮
方法签名
result.locateToRecord();
方法入参
- Long recId:指定记录的RecId
- RecordCursorType type:RecordCursorType 参数可选First(第一条),Last(最后一条),Next(下一条),NextPage(下一页),Prev(上一条),PrevPage(上一页)
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//定位到 DataGrid的 下一条记录
result.locateToRecord(RecordCursorType.Next).setGroup(_DataGrid);
return result;
}
lookupReturn
仅在自定义的下拉画面中有效,控制自定义下拉画面选择后,回填值的情况。返回值按map中的key对应到dataField,按value回填值,当前单元格的字段会触发modifieldField或者modifiedEditor方法,其他字段不会触发,value需要统一转换成String。可传String类型的参数,控制回填的value值,也可传Map
方法签名
result.lookupReturn();
方法入参
- Map
map:key value 形式 key是下拉画面字段 value是主画面字段 - List
: FormLookupReturnField对象 FormLookupReturnField 可传参数 从下拉画面哪个字段 到主画面哪个字段
示例代码
public CommandResult lookupSelect_DataGrid(CommandArg arg) {
CommandResult result=new CommandResult();
//构造多个 FormLookupReturnField 从下拉画面CourseId字段 到主画面 CourseId字段
List<FormLookupReturnField> list = new ArrayList<FormLookupReturnField>();
list.add(new FormLookupReturnField(Course._CourseId, Course._CourseId));
list.add(new FormLookupReturnField(Course._CourseName, Course._CourseName));
result.lookupReturn(list);
return result;
}
openForm
指定打开某一个画面。须传Arg参数,参数内容是OpenFormArg类的对象,也可传Group参数指定关联的Group的名字
方法签名
result.lookupReturn();
方法入参
OpenFormArg openFormarg: OpenFormArg对象
- setAutoRelation:自动加入关联关系,相当于使用框架自带的MenuItemButton功 能;
setManualRelation:不关联,但是当前画面切换记录时,会通知被打开画面,触发被打开画面的linkActive方法;
callerKey:在被打开的Form实例中,会保留callerForm(框架提供,开发不可见)、callerKey(指定的key)
isPopUp:是否为弹出的模态窗体;
menuItemId:被打开的menuItemId注意,虽然命名为OpenFormArg,但实际要求必指定menuItemId,而不允许直接指定formId;
paramObject:传入的Object参数(如果为Map 则对应的key在H5版本中不能为数字);
paramString:传入的字符串参数。
示例代码
public CommandResult buttonOK_Btn(CommandArg arg) {
CommandResult result = new CommandResult();
OpenFormArg itemTableArg = new OpenFormArg();
itemTableArg.isPopUp=true;
//自动加入关联关系,并指定当前画面中与被打开画面关联的数据源 相当于使用框架自带的MenuItemButton功能
itemTableArg.setAutoRelation(__DS_StudentInfo);
//被打开画面与当前画面的数据源不关联,但是当前画面的的数据源切换记录时会通知被打开画面,触发被打开画面的linkActive方法。
//itemTableArg.setManualRelation(__DS_StudentInfo);
itemTableArg.menuItemId=GOTHelper.getEntityId(MenuItem_ItemTable.class);//此为物料表
itemTableArg.callerKey="123123123";
//itemTableArg.paramObject="" 可传任意参数 打开的Form对应的二次开发中 会作为CommandArg的属性再次传回 一般为Map或者List
StudentInfo info = (StudentInfo) arg.getCurrentRecordOrig(false);
if (info != null) {
itemTableArg.paramString = info.getStudentId();
}
result.openForm(itemTableArg);
return result;
}
[!NOTE]
在被打开的Form实例中,会保留fromParm(callerCommandArg,callerformId(访问窗体的formId),callerKey(访问窗体的key 可以在OpenFormArg中指定 如果未做特别指定,则为MenuItemButton的@name),callerMenuItemId(访问窗体的menuItemId),callerType(访问窗体的访问类型 FormModule、 MainForm、MainMenu、StringEditor,arg.formParam.callerType.name()可以获取到当前画面是由何种方式打开的),fromId(窗体的formId))
openMainForm
进入主表。可自己模拟进入主表功能。OpenMainFormArg类中须指定主表的MenuItem的EntityId,还可设置打开主表时的过滤条件
方法签名
result.lookupReturn();
方法入参
- OpenMainFormArg openMainFormArg: OpenMainFormArg 对象
- mainFormWhereValues:进入主画面后携带的过滤条件
- menuItemId:被打开的menuItemId注意,虽然命名为OpenFormArg,但实际要求必指定menuItemId,而不允许直接指定formId;
- paramString:传入的字符串参数
示例代码
public CommandResult buttonOK_OpenMainForm(CommandArg arg) {
CommandResult result = new CommandResult();
//构造一个OpenMainFormArg
OpenMainFormArg omfa = new OpenMainFormArg();
omfa.menuItemId = GOTHelper.getEntityId(MenuItem_Course.class);// MenuItems节点的Id
StringKeyValue key = new StringKeyValue();
key.key = Course._CourseId;
key.value = (String) arg.getEditorValue(_ModifyYNValue);
Object[] o = { key };
omfa.mainFormWhereValues = o;
result.openMainForm(omfa);
return result;
}
openLookup
打开下拉画面的时候设置下拉画面中显示哪些列(也可以设置列宽等),选择某一行记录后返回哪些字段(支持一次性回填多个字段)。此外,OpenLookup也可以指定下拉画面为某个自定义下拉画面
方法签名
result.openLookup();
方法入参
- FormLookup formLookup:下拉画面构造对象
- addColumn:增加下拉画面的列 可设置Column的DisplayLength,width,Alignment以及Label
- addReturnField:指定返回是 从下拉画面哪个字段 到主画面哪个字段
- Class fromClass:也可以指定打开哪个自定义下拉画面
示例代码
public CommandResult openLookup_CourseId2(CommandArg arg) {
CommandResult result = new CommandResult();
FormLookup formLookup = new FormLookup();
//可设置Column的DisplayLength,width,Alignment以及Label
formLookup.addColumn(Course._CourseId).setDisplayLength(10);
formLookup.addColumn(Course._CourseName).setWidth(10);
formLookup.addReturnField(Course._CourseId, _CourseId2);
result.openLookup(formLookup);
//也可以打开一个自定义下拉画面
//result.openLookup(Form_FormLookup_Course2.class);
return result;
}
openResource
打开Server/GongqiERP/resource/帐套名或者Server/GongqiERP/tmp下的文件,须传Arg参数,参数内容是文件的相对路径(相对于Server/GongqiERP/resource/帐套名,如果要打开的文件是tmp目录下的,则需要写@tmp/XXX,tmp路径下的帐套名省略不写)
方法签名
result.openResource();
方法入参
- String url:基于resource 或tmp目录下文件路径 如 /images/a.png 代表 resource下images/a.png 文件
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.openResource("JSON.txt");
return result;
}
openURL
在浏览器中新打开一个网页指向该地址,可以使Client/GongqiERP/html下的文件或者一个具体的网页,需传Arg参数,参数为文件的相对路径(相对于Client/GongqiERP/html)或者http:,https:开头的网址,参数类型为String或OpenURLArg
方法签名
result.openURL();
方法入参
- String url:基于Client/GongqiERP/html目录
示例代码
public CommandResult buttonOK_OpenUrl(CommandArg arg) {
CommandResult result = new CommandResult();
//相对于Client/GongqiERP/bin/html,与帐套没有关系
result.openURL("video.html");
//通过网址打开具体一个公网的网页
//OpenURLArg our = new OpenURLArg("http://www.baidu.com");
//OpenURLArg our = new OpenURLArg("http://www.baidu.com", "参数");
//result.openURL(our);
return result;
}
parentCmdResult
在父画面执行CommandResult,须传Arg参数,参数类型为CommandResult。对于自定义的下拉画面,执行其主画面的客户端命令集,只有当其主画面为FormModule时才执行。对于普通的画面,执行其父画面的客户端命令集,如果其父画面不存在则不做任何处理
方法签名
result.parentCmdResult();
方法入参
- CommandResult result: 父画面执行CommandResult 的对象
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
CommandResult result1 = new CommandResult();
result1.recordDelete();
//父画面执行recordDelete命令
result.parentCmdResult(result1);
return result;
}
recordDelete
模拟客户端操作,删除当前记录,当前无删除权限时,无法删除
方法签名
result.recordDelete();
方法入参
- 无
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.recordDelete();
return result;
}
recordNew
模拟客户端操作,新增一条记录,可传Group。其功能相当于工具栏中的新增按钮
方法签名
result.recordNew();
方法入参
- 无
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.recordNew();
return result;
}
recordRestore
模拟客户端操作,恢复当前记录,可传Group。RecordRestore的功能就是将操作更新至底层数据库,即实现操作的实时更新
方法签名
result.recordNew();
方法入参
- 无
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.recordRestore();
return result;
}
doRecordRestore
模拟客户端操作,恢复记录。即使存在关联子数据源,也不触发子数据源的重新查询
方法签名
result.doRecordRestore();
方法入参
- 无
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.doRecordRestore();
return result;
}
recordSave
模拟客户端操作,保存当前记录
方法签名
result.recordSave();
方法入参
- 无
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.recordSave();
return result;
}
refreshPlugin_Tree
刷新画面Tree插件,需传Plugin的名字和TreeRefreshArg对象。
方法签名
result.refreshPlugin_Tree();
方法入参
- String plugin:Form 上 Plugin 组件的名称
- TreeRefreshArg treeRefreshArg : 树刷新对象
- arg:参数 按opr 的不同 传入不同的参数
- opr:类型
- TreeRefreshArg.SELECT_NODE:选择某个节点
- TreeRefreshArg.ADD_NODE:增加节点
- TreeRefreshArg.SET_DATA:刷新树数据
- TreeRefreshArg.UPDATE_NODE:更新某个节点
示例代码
//构造树
public CommandResult afterInit (CommandArg arg )
{
CommandResult result = new CommandResult ();
//利用 Element 构造一棵树
Element root = DocumentHelper.createElement ( "node" );
root . addAttribute ("label","组织架构");
Element child1 = DocumentHelper createElement ("node");
child1.addAttribute ("label","技术部");
child1.addAttribute ("id", "tech");
child1.addAttribute ("add", "true");
child1.addAttribute ("delete","true");
Element child2 = DocumentHelper.createElement("node");
child2.addAttribute ("label", "销售部" );
child2.addAttribute ("id","sale");
child2.addAttribute ("add", "true");
child2.addAttribute ("delete","true");
root.add (child1 );
root.add (child2 );
//构造TreeRefreshArg 对象 opr 是 SET_DATA arg 是Element root 的 xml 结构
TreeRefreshArg ta = new TreeRefreshArg ();
ta.arg = root.asXML();
ta.opr = TreeRefreshArg.SET_DATA ;
//执行refreshPlugin_Tree命令 刷新 树数据
result refreshPlugin_Tree(_Plugin,ta);
return result ;
}
//选择某个节点
public CommandResult buttonOK_Button2(CommandArg arg) {
CommandResult result = new CommandResult();
//构造TreeRefreshArg 对象 opr 是 SELECT_NODE arg 某个节点的 id 如 sale
TreeRefreshArg treeRefreshArg = new TreeRefreshArg();
treeRefreshArg.arg = "sale";
treeRefreshArg.opr = TreeRefreshArg.SELECT_NODE;
result.refreshPlugin_Tree(_Plugin_Menus, treeRefreshArg);
return result;
}
//新增某个节点
public CommandResult buttonOK_Button3(CommandArg arg) {
CommandResult result = new CommandResult ();
//从 arg 里面 获取到 当前树的 选择节点
String selectedItem = (String )arg . getEditorValue (_Plugin );
Document eselectedItem = null ;
try {
eselectedItem = DocumentHelper . parseText (selectedItem );
} catch (DocumentException e ) {
e . printStackTrace ();
}
//构造一个 TreeNodeAddArg 对象 用于 构造一个树节点
TreeNodeAddArg tna = new TreeNodeAddArg ();
tna.id = eselectedItem.getRootElement().attributeValue ( "id" );
Element node = DocumentHelper . createElement ( "node" );
node.addAttribute ("id" , "search" );
node.addAttribute ("label" , "研发部" );
node.addAttribute ("delete" ,"true" );
tna.data = node.asXML ();
//构造TreeRefreshArg 对象 opr 是 ADD_NODE arg 是 构造好的TreeNodeAddArg
TreeRefreshArg ta = new TreeRefreshArg ();
ta.arg = tna ;
ta.opr = TreeRefreshArg.ADD_NODE ;
result.refreshPlugin_Tree (_Plugin , ta );
return result ;
}
//删除某个节点
public CommandResult buttonOK_Button3(CommandArg arg) {
CommandResult result = new CommandResult ();
//构造TreeRefreshArg 对象 opr 是 DELETE_NODE arg 是 某个 节点的 id 如 sale
TreeRefreshArg ta = new TreeRefreshArg ();
ta.arg ="sale";
ta.opr = TreeRefreshArg.DELETE_NODE ;
result.refreshPlugin_Tree (_Plugin,ta);
return result ;
}
refreshPlugin_Html
刷新画面Html插件
方法签名
result.refreshPlugin_Html();
方法入参
- String plugin:Form 上 Plugin 组件的名称
- HtmlRefreshArg htmlRefreshArg : 树刷新对象
- arg:参数 按opr 的不同 传入不同的参数
- opr:类型
- HtmlRefreshArg .CHANGE_URL:改变html的 路径
- HtmlRefreshArg .CALL_IFRAMEM_METHOD:调用这个html 里面某个方法
示例代码
//初始化html 指到某个路径 路径 基于Clinet/GongqiERP 下面
public CommandResult buttonOK_Button2(CommandArg arg) {
CommandResult result = new CommandResult();
HtmlRefreshArg refresharg = new HtmlRefreshArg();
refresharg.opr = HtmlRefreshArg.CHANGE_URL;
refresharg.arg = "html/echarts/简单饼图.html";
result.refreshPlugin_Html(_Plugin, refresharg);
return result;
}
//调用html 里的 某个方法 并 传递参数
public CommandResult buttonOK_Button2(CommandArg arg) {
CommandResult result = new CommandResult();
HtmlRefreshArg refresharg = new HtmlRefreshArg();
refresharg.opr = HtmlRefreshArg.CALL_IFRAMEM_METHOD ;
//调用的方法名
refresharg . arg = "invokMenth" ;
//参数
refresharg . iframeFuncArg = new String []{(String ) arg . getEditorValue (_StringEditor ), "2333" };
result.refreshPlugin_Html(_Plugin, refresharg);
return result;
}
refreshPlugin_Radio
刷新画面Radio插件,需传Plug的名字和RadioRefreshArg对象
方法签名
result.refreshPlugin_Radio();
方法入参
- String plugin:Form 上 Plugin 组件的名称
- RadioRefreshArg radioRefreshArg: 树刷新对象
- arg:参数 按opr 的不同 传入不同的参数
- opr:类型
- RadioRefreshArg .SELECT_ITEM:选择某个选项
- RadioRefreshArg .SET_DATA:刷新树数据
示例代码
//初始化构造Radio
public CommandResult buttonOK_Button2(CommandArg arg) {
CommandResult result = new CommandResult();
RadioRefreshArg radioRefreshArg = new RadioRefreshArg ();
//构造 RadioSetDataArg 对象 用于 初始化Radio 数据
RadioSetDataArg radioSetDataArg = new RadioSetDataArg ();
//横向显示
radioSetDataArg.setLayout (RadioLayout . horizontal );
//显示的子项
radioSetDataArg.addItem ( "a" , "水果" );
radioSetDataArg.addItem ( "b" , "粮食" );
radioSetDataArg.addItem ( "c" , "用品" );
radioRefreshArg.opr = RadioRefreshArg.SET_DATA ;
radioRefreshArg.arg = radioSetDataArg;
result.refreshPlugin_Radio (_Plugin , radioRefreshArg )
return result;
}
//选择某个指定的选项
public CommandResult buttonOK_Button2(CommandArg arg) {
CommandResult result = new CommandResult();
RadioRefreshArg refresharg = new RadioRefreshArg();
refresharg.arg = "all";
refresharg.opr = RadioRefreshArg.SELECT_ITEM;
result.refreshPlugin_Radio(_Plugin, refresharg);
return result;
}
removeEditorStyle
移除编辑框的样式条件
方法签名
result.removeEditorStyle();
方法入参
- String editorName:Form 上 FormItem 的名称 一般 都是 _ 引用
示例代码
public CommandResult buttonOK_Button2(CommandArg arg) {
CommandResult result = new CommandResult();
result.removeEditorStyle(_Name);
return result;
}
removeRowStyle
移除表格行的样式条件
方法签名
result.removeRowStyle();
方法入参
- String dataGridName:Form 上 datagrid 的名称 一般 都是 _ 引用
示例代码
public CommandResult buttonOK_Button2(CommandArg arg) {
CommandResult result = new CommandResult();
result.removeRowStyle(_DataGrid);
return result;
}
restoreParent
恢复父画面相应记录
方法签名
result.restoreParent();
方法入参
- 无
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.restoreParent();
return result;
}
doRestoreParent
恢复父级数据源的当前记录,但不触发其子数据源的重新查询
方法签名
result.doRestoreParent();
方法入参
- 无
示例代码
public CommandResult buttonOK_按钮名(CommandArg arg) {
CommandResult result = new CommandResult();
result.doRestoreParent();
return result;
}
selectRecords
选择指定记录
方法签名
result.selectRecords();
方法入参
- String typ:all:全选;none:全部取消;reverse:反选
- List
recIds:记录recId 集合
示例代码
public CommandResult buttonOK_按钮名(CommandArg arg) {
CommandResult result = new CommandResult();
//选择所有记录
result.selectRecords("all");
//选择 RecId 是 123 和 456 的记录
List<Long> list = new ArrayList<Long>();
list.add(123L);
list.add(456L);
result.selectRecords(list);
return result;
}
setButtonStyle
设置Button样式。其样式名称参考flex中的样式名称
方法签名
result.setButtonStyle();
方法入参
- String buttonName:Form 上 按钮的名称 一般 是 _ 引用
- ButtonStyle style: 按钮样式对象
示例代码
public CommandResult buttonOK_ButtonTest(CommandArg arg) {
CommandResult result = new CommandResult();
ButtonStyle style = new ButtonStyle();
style.setStyle("color", 0xF4A460);
style.setStyle("fontSize", 14);
style.setStyle("fontWeight", "bold");
result.setButtonStyle(_ButtonTest, style);
return result;
}
setContainerStyle
设置Container的样式。传的参数可以是container控件名称,也可以是ContainerStyle对象
方法签名
result.setContainerStyle();
方法入参
- String containerName:Form 上 容器组件的名称 如 Group
- ContainerStyle style: 容器样式对象
示例代码
public CommandResult buttonOK_ButtonTest(CommandArg arg) {
CommandResult result = new CommandResult();
ContainerStyle containerStyle = new ContainerStyle();
//border
containerStyle.setStyle(ContainerStyle.BORDER_COLOR, 0x00FF00);
containerStyle.setStyle(ContainerStyle.BORDER_WEIGHT, 3);
containerStyle.setStyle(ContainerStyle.HAS_BORDER, true);
// background_color
containerStyle.setStyle(ContainerStyle.BACKGROUND_COLOR, 0x00FF00);
//background_image,图片路径为resource/账套名/img
containerStyle.setStyle(ContainerStyle.BACKGROUND_IMAGE, getFileBytes("report.png"));
// padding
containerStyle.setStyle(ContainerStyle.PADDING_BOTTOM, 1);
containerStyle.setStyle(ContainerStyle.PADDING_LEFT, 2);
containerStyle.setStyle(ContainerStyle.PADDING_RIGHT, 3);
containerStyle.setStyle(ContainerStyle.PADDING_TOP, 4);
result.setContainerStyle(_Group3, containerStyle);
return result;
}
private byte[] getFileBytes(String fileName) throws IOException {
String path = FrameworkEnvironment.getResourceDir() + "/img/"+ fileName;
BufferedInputStream in = new BufferedInputStream(new FileInputStream(path));
ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
byte[] temp = new byte[1024];
int size = 0;
while ((size = in.read(temp)) != -1) {
out.write(temp, 0, size);
}
in.close();
byte[] content = out.toByteArray();
return content;
}
setFormDataSourceGroupProperty
设置控件组的属性 其具体用法与SetFormItemPropertyArg类似,区别在于设置对象的个数不同
方法签名
result.setFormDataSourceGroupProperty();
方法入参
- String dataSourceAlise:Form 数据源名称
- String property: 参数名称
- Object value : 参数值
示例代码
public CommandResult buttonOK_ButtonTest(CommandArg arg) {
CommandResult result = new CommandResult();
//设置数据源 SysUser 的 AllowEditor 值 是 true
result.setFormDataSourceGroupProperty(__DS_SysUser, "AllowEditor", true);
return result;
}
setFormItemPropertyArg
设置画面元素的属性
方法签名
result.setFormItemPropertyArg();
方法入参
- List
list:FormItemPropertyArg 对象的集合
示例代码
// 例1:设置Datagrid的行高
public CommandResult buttonOK_ButtonTest(CommandArg arg) {
CommandResult result = new CommandResult();
//构造 FormItemPropertyArg 的集合 用于设置 FormItem 的 指定属性
List<FormItemPropertyArg> list = new ArrayList<FormItemPropertyArg>();
FormItemPropertyArg propertyArg = new FormItemPropertyArg();
//指定 FormItem 的名称
propertyArg.controlName = _DataGrid;
//指定数据 如 行高
propertyArg.propertyName = FormItem_DataGrid.ROW_HEIGHT;
//指定 值
propertyArg.propertyValue = 30;
list.add(propertyArg);
result.setFormItemPropertyArg(list);
return result;
}
//例2:将Test_ItemDim1_Config设置成密码框的例子。当displayAsPassword值为true时,可通过设置passwordFixedLength的值来控制密码的显示长度
public CommandResult buttonOK_ButtonTest(CommandArg arg) {
CommandResult result = new CommandResult();
List<FormItemPropertyArg> list = new ArrayList<FormItemPropertyArg>();
FormItemPropertyArg propertyArg = new FormItemPropertyArg();
propertyArg.controlName = _Test_ItemDim1_Config;
propertyArg.propertyName = FormItem_StringEditor.DISPLAY_AS_PASSWORD;
propertyArg.propertyValue = true;
list.add(propertyArg);
propertyArg = new FormItemPropertyArg();
propertyArg.controlName = _Test_ItemDim1_Config;
propertyArg.propertyName = FormItem_StringEditor.PASSWORD_FIXED_LENGTH;
propertyArg.propertyValue = 8;
list.add(propertyArg);
result.setFormItemPropertyArg(list);
return result;
}
// 例3:设置Tab的高度、宽度、字体
public CommandResult beforeInit(CommandArg arg) {
CommandResult result = new CommandResult();
List<FormItemPropertyArg> list = new ArrayList<FormItemPropertyArg>();
FormItemPropertyArg fpa = new FormItemPropertyArg();
fpa.propertyName = FormItemPropertyArg.Names.FormItem_Tab.TAB_BUTTON_HEIGHT;
fpa.propertyValue = 50;
fpa.controlName = _Tab;
list.add(fpa);
FormItemPropertyArg fpa2 = new FormItemPropertyArg();
fpa2.propertyName = FormItemPropertyArg.Names.FormItem_Tab.TAB_BUTTON_FONTSIZE;
fpa2.propertyValue = 18;
fpa2.controlName = _Tab;
list.add(fpa2);
FormItemPropertyArg fpa3 = new FormItemPropertyArg();
fpa3.propertyName = FormItemPropertyArg.Names.FormItem_Tab.TAB_BUTTON_WIDTH;
fpa3.propertyValue = 90;
fpa3.controlName = _Tab;
list.add(fpa3);
result.setFormItemPropertyArg(list);
return result;
}
setFormParamConditionTask
当当前画面的参数满足指定条件时执行相应的CommandResult 一般常用进入画面后,改造画面结构,常用在beforeInit方法中
方法签名
result.setFormParamConditionTask();
方法入参
- FormParamConditionTask task:FormItemPropertyArg 对象 也可以是 个 List 集合
示例代码
public CommandResult buttonOK_ButtonTest(CommandArg arg) {
CommandResult result = new CommandResult();
//构造一个 FormParamConditionTask 对象 用于设置任务事件
FormParamConditionTask task = new FormParamConditionTask();
//构造一个 FormParamCondition 用于 设置参数条件
FormParamCondition condition = new FormParamCondition();
FormParamConditionItem item = new FormParamConditionItem();
item.type = FormParamType.MenuItemId;
item.value = formDimControl.getRefId();
condition.items.add(item);
task.setFormParamCondition(condition);
CommandResult dimResult = FormDimRuleService.util().
dimControl(formId, formDimControl.getRefId());
//设置 当 达成条件 时候 执行的 CommandResult命令
task.setTrueCommandResult(dimResult);
result.setFormParamConditionTask(task);
return result;
}
setFormTitle
设置画面的标题
方法签名
result.setFormTitle();
方法入参
- String title:标题名称
示例代码
public CommandResult buttonOK_ButtonTest(CommandArg arg) {
CommandResult result = new CommandResult();
result.setFormTitle("测试123");
return result;
}
setTextStyle
设置Text的样式。需传参数:controlName - text类型控件名称,style - TextStyle对象
方法签名
result.setFormTitle();
方法入参
- String textName:text类型的FormItem 名称
- TextStyle style :TextStyle 对象 用于设置样式
示例代码
public CommandResult buttonOK_ButtonTest(CommandArg arg) {
CommandResult result = new CommandResult();
TextStyle textStyle = new TextStyle();
textStyle.setBackgroundColor(0xCC00FF);
result.setTextStyle(_Text, textStyle );
return result;
}
showClipboard
显示剪切板 配合clipboardOK_ 使用
方法签名
result.showClipboard();
方法入参
- Clipboard clipboard:Clipboard 对象 有text,keyvalue,datagrid三种类型
示例代码
// 展示 文本类型的 剪切板
public CommandResult buttonOK_ButtonShowText(CommandArg arg) {
CommandResult result = new CommandResult();
Clipboard clipboard = new Clipboard("text",ClipboardMode.In, ClipboardType.Text);
result.showClipboard(clipboard);
return result;
}
// 展示 文本类型的 剪切板的确认方法
public CommandResult clipboardOK_text(CommandArg arg) {
CommandResult result = new CommandResult();
String str = (String) arg.argObject;
result.alert(str);
return result;
}
// 展示 keyvalue类型的 剪切板
public CommandResult buttonOK_ButtonShowKeyValue(CommandArg arg) {
CommandResult result = new CommandResult();
Clipboard clipboard = new Clipboard("keyvalue",ClipboardMode.In, ClipboardType.KeyValue);
result.showClipboard(clipboard);
return result;
}
// 展示 keyvalue类型的 剪切板的确认方法
public CommandResult clipboardOK_keyvalue(CommandArg arg) {
CommandResult result = new CommandResult();
Map<String, String> map = (Map<String, String>) arg.argObject;
String str = map.get("A")+","+map.get("B")+","+map.get("C");
result.alert(str);
return result;
}
// 展示 datagrid类型的 剪切板
public CommandResult buttonOK_ButtonShowDataGrid(CommandArg arg) {
CommandResult result = new CommandResult();
Clipboard clipboard = new Clipboard("datagrid",ClipboardMode.In, ClipboardType.DataGrid);
//粘贴的数据是否包含标题,如果设置包含标题,则粘贴数据的第一行将作为header
//clipboard.setIsDataWithHeader(true);
result.showClipboard(clipboard);
return result;
}
// 展示 datagrid类型的 剪切板的确认方法
public CommandResult clipboardOK_datagrid(CommandArg arg) {
CommandResult result = new CommandResult();
List<Map<String, String>> list = (List<Map<String, String>>) arg.argObject;
String str = "";
for (Map<String, String> map : list) {
//map的key值为datagrid的header名
str = str + map.get("0")+","+map.get("1")+","+map.get("2")+"\n";
}
result.alert(str);
return result;
}
showDialog
通过CommandResult返回Dialog命令,可以打开Dialog对话框。
方法签名
result.showDialog();
方法入参
- Dialog dialog:Dialog 对象 用于构造一个 Dialog 对话框
示例代码
//构造一个Dialog 弹框画面 里面 有两个字段 分别是 员工 和 姓名 员工 支持下拉 员工表数据
public CommandResult buttonOK_ShowDialog(CommandArg arg) {
CommandResult result = new CommandResult();
// 新建一个 Dialog 对象 参数第一个是 dialog 唯一编号 第二个为 Dialog 的 中文显示标签
Dialog dialog = new Dialog( "dialog1", "标题");
//在 dialog 上增加 输入框字段 参数 分别是 字段ID 字段标签 和 字段 类型 可以是 引用DataType 也可以是 DialogEditorType 类型
dialog.addDialogField("Employee", "员工", DataType_SysEmployeeId.class);
dialog.addDialogField("Name", "姓名", DialogEditorType.TypeString);
result.showDialog(dialog);
return result;
}
//Dialog 弹框 的 确认按钮方法
public CommandResult dialogOK_dialog1(CommandArg arg) {
CommandResult result = new CommandResult();
String employee = arg.getDialogFieldValue("Employee");
String name = arg.getDialogFieldValue("Name");
result.fadeInfo("你已确定"+employee+" "+name);
return result;
}
//Dialog 弹框 的 取消按钮方法
public CommandResult dialogCancel_dialog1(CommandArg arg) {
CommandResult result = new CommandResult();
result.alert("你已取消");
return result;
}
[!NOTE]
该方法可以通过代码生成一个对话框,对话框中可以包含编辑框以及确定和取消两个按钮,确认按钮触发“dialogOK”+Dialog的Id 的方法,取消按钮触发"dialogCancel"+Dialog的Id的方法。在new Dialog的对象时,可指定Dialog的Id和Title。
Dialog对象有setBottomHorizontalAlign(设置底边(目前就是按钮)的横向对齐方式)、setCancelLabel(设置取消按钮的Label),setHeight(设置高度),setHorizontalAlign(设置横向对齐方式,参数为枚举类型HorizontalAlign),setLayout(设置布局方式,参数类型为Layout),setMinHeight(设置最小高度),setMinWidth(设置最小宽度),setOKLabel(设置确认按钮的Label),setRunOnClient(是否只在客户端运行,如果runOnClient==true,则doOK、doCancel中的对应的方法必须事先设置prefetch=true),setVerticalAlign(设置纵向对齐方式),setWidth(设置宽度),addDialogField(增加DialogField,三个参数分别是DialogField的Id,DialogField的显示Label,DialogEditor的类型),addDialogFieldGroup(设置字段组)方法。
Dialog默认两个按钮“确认”与“取消”label可修改,例如可修改属性(dialog.setOKLabel("确认111");dialog.setCancelLabel("取消222");)
Dialog默认为前置窗口。
dialogField为StringEditor且id包含password,则此DialogField的显示为密码框
showImage
显示图片。Arg参数可传FormDesigner中ImageEditor的名字,也可传图片的路径,还可传图片内容的byte[]数组
方法签名
result.showImage();
方法入参
- byte[] bytes:图片的Byte数组
- String path:路径 基于 Resource 目录下
示例代码
public CommandResult buttonOK_Button(CommandArg arg) throws IOException {
byte[] bytes = getFileBytes("图片.gif");
CommandResult result = new CommandResult();
result.showImage(bytes);
//resource 目录下的 imgaes 文件夹下的 a.png
result.showImage("/images/a.png");
return result;
}
switchToTabPage
切换选项卡,须传参数,可用setControl来控制跳转选项卡,setControl的值为跳转页面的控件名称
方法签名
result.switchToTabPage();
方法入参
- String tabPage:指定的选项卡名称
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.switchToTabPage(_TabPage);
result.executeQuery();
return result;
}
tmpRecordAdd
增加临时表记录,传List
方法签名
result.tmpRecordAdd();
方法入参
- List
list:列表数据 T 为具体的 临时表对象
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
List<TestTmpTable> list = new ArrayList<TestTmpTable>();
//新建 一条TestTmpTable 存入到 list 内
TestTmpTable tt = new TestTmpTable();
tt.initAsTempTable();
tt.setA_TableField("小明");
tt.setA_TableField1(1);
list.add(tt);
tt = new TestTmpTable();
tt.initAsTempTable();
tt.setA_TableField("小红");
tt.setA_TableField1(2);
list.add(tt);
CommandResult result = new CommandResult();
//此画面有多个数据源,所以当赋值的时候必须指定数据源
//使用 tmpRecordAdd 给临时数据源TestTmpTable 添加数据
result.tmpRecordAdd(list).setGroup(__DS_TestTmpTable);
return result;
}
[!CAUTION]
3.13版本 标记为不可用
tmpRecordClear
临时表中产生的数据都不会被存入数据库对应的表中,因此,清空临时表中的数据实际是清空存在客户端中的数据,通过调用TmpRecordClear命令完成
方法签名
result.tmpRecordClear();
方法入参
- 无
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//多个数据源的时候取指定数据源,单个数据源可不指定
result.tmpRecordClear().setGroup(__DS_TestTmpTable);
return result;
}
[!CAUTION]
3.13版本 标记为不可用
tmpRecordDelete
删除临时表的记录是通过构造将删除记录的QueryTable,然后把这个QueryTable与TmpRecordDelete命令传回客户端来完成的
方法签名
result.tmpRecordDelete();
方法入参
- QueryTable query:根据QueryTable的查询条件去删除记录
示例代码
@CommandArgOption(groups = "all(cr,fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//获取到指定数据源的当前记录
TestTmpTable tt = (TestTmpTable)arg.getGroupInfo(__DS_TestTmpTable).getCurrentRecord();
QueryTable qt = arg.getGroupInfo(__DS_TestTmpTable).getFormQuery();
qt.createWhereItem(TestTmpTable._A_TableField).setValue(tt.getA_TableField());
result.tmpRecordDelete(qt).setGroup(__DS_TestTmpTable);
return result;
}
[!CAUTION]
3.13版本 标记为不可用
tmpRecordRefresh
刷新临时表指定的数据
方法签名
result.tmpRecordRefresh();
方法入参
- List
list:列表数据 T 为具体的 临时表对象
示例代码
@CommandArgOption(groups = "all(ar)")
public CommandResult buttonOK_TmpRecordRefresh(CommandArg arg) {
CommandResult result = new CommandResult();
//获取到 所有的数据
List<TestTmpTable> testTmpTables=(List<TestTmpTable>)
arg.getGroupInfo(__DS_TestTmpTable).getAllRecords();
List<TestTmpTable> tmpTablesUpdate=new ArrayList<>();
if (testTmpTables.size() > 0) {
for (TestTmpTable testTmpTable2 : testTmpTables) {
testTmpTable2.setA_TableField1((int)(Math.random() * 1000));
tmpTablesUpdate.add(testTmpTable2);
}
//重新赋值刷新数据
result.tmpRecordRefresh(tmpTablesUpdate).setGroup(__DS_TestTmpTable);
} else {
throw new ERPException("请先新增临时表的临时记录");
}
return result;
}
[!CAUTION]
3.13版本 标记为不可用
updateControlAllowEdit
控制控件是否可编辑
方法签名
result.updateControlAllowEdit();
方法入参
- String controlName:控件的名称 也可以是 Map
,Key值为控件的名称,Value值为Boolean类型 key 一般都是 _引用 - Boolean value:值
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.updateControlAllowEdit(_Ttt,false);
return result;
}
updateControlLabel
控制控件的Label
方法签名
result.updateControlLabel();
方法入参
- String controlName:控件的名称 也可以是 Map
,Key值为控件的名称,Value值为String类型 key 一般都是 _引用 - String value:值
示例代码
public CommandResult buttonOK_button(CommandArg arg) {
CommandResult result = new CommandResult();
result.updateControlLabel("Test_ID","机构名称");
return result;
}
updateControlSkipTab
改变某个控件的Tab跳转顺序
方法签名
result.updateControlSkipTab();
方法入参
- String controlName:控件的名称 也可以是 Map
,Key值为控件的名称,Value值为Boolean类型 key 一般都是 _引用 - Boolean value:值
示例代码
@Override
public CommandResult afterInit(CommandArg arg) {
CommandResult result = new CommandResult();
result.updateControlSkipTab(_New_Name,true);
return result;
}
updateControlVisible
控制控件是否可见
方法签名
result.updateControlVisible();
方法入参
- String controlName:控件的名称 也可以是 Map
,Key值为控件的名称,Value值为Boolean类型 key 一般都是 _引用 - Boolean value:值
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.updateControlVisible(_NewTree,true);
return result;
}
updateEditorShowLookup
控制Editor是否可打开下拉画面。Designer中和代码中都有设置时,以代码中的为准
方法签名
result.updateEditorShowLookup();
方法入参
- String controlName:控件的名称
- Boolean value:值
示例代码
@Override
public CommandResult beforeInit(CommandArg arg) {
CommandResult result = new CommandResult();
result.updateEditorShowLookup(_CourseId3, false);
return result;
}
updateEditorShowMainForm
控制Editor是否可以进入主表。Designer中和代码中都有设置时,以代码中的为准
方法签名
result.updateEditorShowMainForm();
方法入参
- String controlName:控件的名称
- Boolean value:值
示例代码
@Override
public CommandResult beforeInit(CommandArg arg) {
CommandResult result = new CommandResult();
result.updateEditorShowLookup(_CourseId3, false);
result.updateEditorShowMainForm(_CourseId3, true);
return result;
}
updateGroupCollapseState
控制可折叠的Group是否折叠。需要在Designer中将这个Group的showLabel属性设为true,并且将Collapsible属性设为true才能生效。updateGroupCollapseState命令传值true,则为展开,传值false则为折叠
方法签名
result.updateGroupCollapseState();
方法入参
- String controlName:控件的名称
- Boolean value:值
示例代码
public CommandResult buttonOK_UpdateGroupCollapseState(CommandArg arg) {
CommandResult result = new CommandResult();
//折叠
result.updateGroupCollapseState(_Group6, false);
return result;
}
updateCurrentQuery
更新客户端的CurrentQuery为指定的QueryTable,Arg参数需传QueryTable,也可setGroup,如果未设置Group(数据源组),则默认为当前Group
方法签名
result.updateCurrentQuery();
方法入参
- QueryTable qt:查询的 QueryTable 对象
示例代码
@CommandArgOption(groups = "current(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
QueryTable qt = arg.getCurrentQuery();
qt.createWhereItem(Test._ID).setValue("1");
result.updateCurrentQuery(qt);
result.executeQuery();
return result;
}
updateFormQuery
更新客户端的FormQuery为指定的QueryTable。Arg参数需传QueryTable,也可setGroup,如果未设置Group(数据源组),则默认为当前Group
方法签名
result.updateFormQuery();
方法入参
- QueryTable qt:查询的 QueryTable 对象
示例代码
@CommandArgOption(groups = "current(fq)")
public CommandResult buttonOK_按钮名(CommandArg arg) {
CommandResult result = new CommandResult();
QueryTable qt = arg.getFormQuery();
qt.createWhereItem(_ID).setValue("1");
result.updateFormQuery(qt);
result.executeQuery();
return result;
}
[!NOTE]
UpdateFormQuery的筛选是不可逆的,执行此操作后无法在GongqiERP界面中使用“去除筛选”回到过滤前的条件
writeEditor
对于无数据源的编辑框,写入值;并触发modifiedEditor事件。参数传Editor的@name与写入的value值,或者传Map
方法签名
result.writeEditor();
方法入参
- String editorName:Form上 FormItemEditro的名字 一般是 _ 引用
- Object value : 写入的值
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.writeEditor(_SysImportMode, SysImportMode.Append);
return result;
}
doWriteEditor
对于无数据源的字段,强制写入值;不触发modifiedField事件。参数传Editor的@name与写入的value值,或者传Map
方法签名
result.doWriteEditor();
方法入参
- String editorName:Form上 FormItemEditro的名字 一般是 _ 引用
- Object value : 写入的值
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.doWriteEditor(_SysImportMode, SysImportMode.Append);
return result;
}
writeField
对于有数据源的字段,写入值;并触发modifiedField事件,修改FormDataSourceField的值,需传Control参数与Arg参数,参数传FormDataSourceField的@name与写入的value值,或者传Map
方法签名
result.writeField();
方法入参
- String editorName:Form上 数据源字段的名字 一般是 _ 引用
- Object value : 写入的值
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.writeField(SysUser._UserName, "张三");
return result;
}
doWriteField
对于有数据源的字段,强制写入值;不触发modifiedField事件 ,修改FormDataSourceField的值,参数传FormDataSourceField的@name与写入的value值,或者传Map
方法签名
result.doWriteField();
方法入参
- String editorName:Form上 数据源字段的名字 一般是 _ 引用
- Object value : 写入的值
示例代码
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
result.doWriteField(SysUser._UserName, "张三");
return result;
}
writeImage
把图片信息填入Image控件。一个图片,可直接传参数FormItem_Image控件的@name和图片路径,多个图片时,可选择传Map
方法签名
result.writeImage();
方法入参
- String imgName: image 控件的名称
- String value : 写入图片路径
示例代码
public CommandResult buttonOK_WriteImage(CommandArg arg) {
CommandResult result = new CommandResult();
result.writeImage(_Image, "test/8434.jpg");
return result;
//指定多个Image的图片路径
//writeImage(java.util.Map<java.lang.String,java.lang.String> map)
//Map<String, Object> map=new HashMap<String, Object>();
//map.put(_Image, "test/8434.jpg");
//map.put(_Image2, "test/8435.jpg");
//result.writeImage(map);
}
timerStart
开启定时器
方法签名
result.timerStart();
方法入参
- String timerId: 定时器唯一名称
- Long delay: 延迟多少毫秒执行
- Long repeatCount:重复次数
- String formCmd:回调的 Form 上的方法
- String formCmdArgObject: arg参数
示例代码
public CommandResult buttonOK_TimerStart(CommandArg arg) {
CommandResult result = new CommandResult();
result.timerStart("1", 3600, 0, "fetch1","");
return result;
}
public CommandResult fetch1(CommandArg arg) {
CommandResult result = new CommandResult();
result.fadeInfo("s");
return result;
}
timerStop
关闭定时
方法签名
result.timerStop();
方法入参
- String timerId: 定时器唯一名称
示例代码
public CommandResult buttonOK_TimerStop(CommandArg arg) {
CommandResult result = new CommandResult();
result.timerStop("1");
result.fadeInfo("已经关闭了Id为“1”的定时器");
return result;
}