自定义下拉画面

概述

自动下拉画面

基于DataType的关联主表下拉

操作流程

当开发者在GOT设计器Tables节点下 新建Table与Field后,可把Table 内主字段 如 编号, 拖入到DataTypes 节点下,并且加入主表关联

保存并查看该 DataType ,Relation 节点 绑定了 主表 Table 和 主字段 Filed信息

当该DataType 被其他节点继承后,就可自动下拉出主表和 主字段数据 支持下拉自动回填数据

操作如下:

  • 新建表LookUpMainTable并新建 Number字段undefined

  • 把Number 字段 拖入到DataTypes下 并加入主表关联

    undefined

    undefined

  • 新建一个Form 在Form上新建一个FormItemStringEditor 然后 继承 该 DataType(或者新建表字段继 然后构造Form)

    undefined

  • 最终生成画面

数据列与筛选列构造

数据列

默认自动下拉 主表过滤字段 只显示当前字段 如果需要 显示主表其他字段 则 需要修改下拉画面主表下的AutoLookup 属性

undefined

支持右键AutoLookup 新增子节点 然后通过 修改字节的Field 属性 关联字段

支持从TableFiled 拖入 自动绑定Field属性

undefined

每增加一个子节点 就会在下拉表格内多增加一列

筛选列

可配置 每一 数据列的 AutoQueryField 属性 当为true 的时候 自动设置为查询字段 具体表现为在下拉画面的表格上方生成该字段的查询框 查询方式默认是 包含 查询内容

可配置 每一 数据列的 FocusIn属性 当为true 的时候 自动设置为焦点进入查询字段 具体表现为在下拉画面的表格上方生成该字段的查询框 并且改查询框直接可编辑

可配置 每一 数据列的 JoinQuery属性 当为true 的时候 改查询框支持跨列查询

下拉数据过滤

平台支持对自动构造的下拉画面的数据进行 进一步过滤 通过 二次开发方法 lookup_ 具体可查看【二次开发文档】 这里提供一个简单的例子

    //根据 QueryTable 增加 过滤调节 来过滤 下拉主表的数据
    public void lookup_Number(CommandArg arg, String baseValue, QueryTable qt, FormDataSourceGroupResult result) {
        qt.findOrCreateWhereItem(LookUpMainTable._Name).setValue("<>''");
        qt.findOrCreateWhereItem(LookUpMainTable._Number).setValue("<>''");
    }

FilterField规则

基于Form自定义下拉画面

平台支持 开发人员自定义下拉画面,通过构造 FormType 为 Lookup 的Form节点 来渲染下拉画面 操作如下

1.新建一个类型为Lookup的Form

undefined

2.构造其需要的下拉数据源 如 LookUpMainTable 并构造 下拉画面为 单 DataGrid 元素

undefined

  1. 配置下拉后返回值 可在 DataSources 节点的 ReturnTable 和 ReturnField 属性处配置 注意 改配置仅支持返回单数据源的单字段 如需 反正多字段的集合 或着有其他 逻辑的 请 使用下拉画面的 二次开发方法 lookupSelect_

    undefined

    public CommandResult lookupSelect_DataGrid(CommandArg arg) {
        CommandResult result = new CommandResult();
        List<FormLookupReturnField > list = new ArrayList <FormLookupReturnField >();
         //FormLookupReturnField 画面 返回对象 第一个参数是 从字段  第二个参数 到字段 
        list.add ( new FormLookupReturnField (LookUpMainTable._Number,Student._Number));
        list.add ( new FormLookupReturnField (LookUpMainTable._Name,Student._CreatedBy));
        result.lookupReturn (list );
        return result;
    }
    

    4.当设计好 Lookup Form 之后 在任意 FormItemStringEditor 的 属性 FormLookup 处下拉配置该Form 则可在画面上该字段实现下拉

    undefined

    5.具体画面效果

    undefined

    6.如需要其他画面组件 如 查询框,Tab页签等 请继续完善下拉画面 如:

    undefined

代码构造自定义下拉画面

平台支持开发者通过代码去构造任意一下StringEditro的下拉画面

根据字段有无数据源 代码构造存在不同差异

无数据源在 Form 窗体 本身的 java 文件内 可 构造 二次开发方法 openLookup 与 lookup

有数据源在 FormDataSource 对应的 java 文件内 可 构造 二次开发方法 openLookup 与 lookup

openLookup_ 打开下拉画面时 构造下拉的列

lookup_ 打开下拉画面时 构造下拉数据

//构造 下拉画面
public CommandResult openLookup_CourseId(CommandArg arg) {
    CommandResult result = new CommandResult();
    FormLookup formLookup = new FormLookup ();
    //构造FormLookup 对象  然后 构造 下拉画面的列 和回填对应关系 其中 jOinQuery属性 用于构造该列的查询框
    formLookup.addColumn (Course._CourseId).setDisplayLength(10).joinQuery=true;
    formLookup.addColumn (Course._CourseName).setDisplayLength(10);
     formLookup.addReturnField(Course._CourseId,_CourseId);
     formLookup.addReturnField(Course._CourseName,_CourseName);
     result.openLookup(formLookup);
    return result;
}

//构造一个自定义下拉列表返回数据
public void lookup_YearData(CommandArg arg, String baseValue, QueryTable qt, FormDataSourceGroupResult result) {
        List <Map <String ,Object >> list = new ArrayList <Map <String ,Object >>();
         List<Course> list2 = DAOHelper.findList(Course.class, Course._SysActive,true);
         for (Course course : list2) {
             Map <String ,Object > map = new HashMap<>();
             map.put(Course._CourseId, course.getNumber());
             map.put(Course._CourseName, course.getName());
             list.add(map);
        }
      result.setResult (list );
}

[!NOTE]

代码构造的下拉画面 仅支持 搜索框和表格组件 如需 复杂下拉画面 请构造基于Form的自定义下拉画面

results matching ""

    No results matching ""