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;
}

undefined

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,Key值为控件的名称,Value值为Boolean类型,表示是否可以新增,也可分写setControl()与setArg()

方法签名

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,Key值为控件的名称,Value值为Boolean类型,表示是否可以执行相关的附件操作,也可分写setControl()与setArg()

方法签名

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,Key值为控件的名称,Value值为Boolean类型,表示是否可以删除,也可分写setControl()与setArg()

方法签名

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,Key值为控件的名称,Value值为Boolean类型,表示是否可以编辑,也可分写setControl()与setArg()

方法签名

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,Key值为控件的名称,Value值为Boolean类型,表示是否可以导出数据,也可分写setControl()与setArg()

方法签名

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,Key值为控件的名称,Value值为Boolean类型,表示是否可以查询,也可分写setControl()与setArg()

方法签名

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,Key值为控件的名称,Value值为Boolean类型,表示是否可以保存,也可分写setControl()与setArg()

方法签名

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 ,Key值为字段,Value值为GOT_Property_AllowEdit类型 可选 Always OnlyOnCreate 和 Never

方法签名

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 ,Key值为字段,Value值为Boolean类型 可选 true 和 false

方法签名

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 ,Key值为字段,Value值为Integer类型

方法签名

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 ,Key值为字段,Value值为String类型

方法签名

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 ,Key值为字段,Value值为Integer类型

方法签名

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、FormLookupReturnField对象的list控制多个回填的值

方法签名

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,key为Editor的@name,value为写入的值

方法签名

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,key为Editor的@name,value为写入的值

方法签名

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,key为FormDataSourceField的@name,value为写入的值

方法签名

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,key为FormDataSourceField的@name,value为写入的值

方法签名

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,key是FormItem_Image控件的@name,value是图片路径。图片路径相对于Server/GongqiERP/Resource/账套。图片路径如果传"NULL"则清空图片,如果传null则显示错误图片

方法签名

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;
 }

results matching ""

    No results matching ""