表单面板(PSDEFORM)及其成员模型完整介绍

表单面板(PSDEFORM)概述

表单面板是iBizModel中的实体表单部件模型,基于数据实体构建,专注于处理与特定实体相关的数据输入和编辑操作。支持编辑表单(EDITFORM)和搜索表单(SEARCHFORM)两种类型。

核心特性

  • 数据绑定:与数据实体(PSDATAENTITY)紧密关联
  • 布局支持:支持栅格布局(12列/24列)和Flex布局
  • 多端适配:支持PC端和移动端表单配置
  • 逻辑控制:支持表单级别和成员级别的逻辑控制
  • 扩展性:支持自定义插件和样式扩展

成员模型包含关系及层级结构

表单面板 PSDEFORM
表单成员 PSDEFORMDETAIL
detailtype: FORMPAGE
实体表单引用 PSDEFORMRF
表单项更新 PSDEFIUPDATE
表单项值规则 PSDEFIVR
实体表单逻辑 PSDEFORMLOGIC
表单成员 PSDEFORMDETAIL
detailtype: GROUPPANEL/TABPANEL
表单成员逻辑 PSDEFDLOGIC
表单成员 PSDEFORMDETAIL
detailtype: FORMITEM/BUTTON/DRUIPART
表单成员逻辑 PSDEFDLOGIC
表单项更新成员 PSDEFIUDETAIL
表单成员逻辑 PSDEFDLOGIC
自嵌套
表单成员逻辑 PSDEFDLOGIC
自嵌套

核心成员模型详解

1. PSDEFORMDETAIL(表单成员)

表单成员是表单的核心组成部分,提供多种成员类型,支持多层嵌套和动态逻辑控制。

主要成员类型及层级关系:

  • FORMPAGE - 表单分页(根成员,必须作为PSDEFORM的直接子元素)
  • TABPANEL - 分页部件容器(只能包含TABPAGE)
  • TABPAGE - 分页面板(只能放置在TABPANEL中)
  • FORMITEM - 表单项(数据输入输出,叶子节点)
  • GROUPPANEL - 分组面板(布局容器)
  • DRUIPART - 数据关系界面(叶子节点)
  • MDCTRL - 多数据部件(类型为REPEATER时可包含其他成员)
  • BUTTON - 表单按钮(叶子节点)
  • IFRAME - 直接页面嵌入(叶子节点)

2. PSDEFDLOGIC(表单成员逻辑)

提供表单成员的动态逻辑控制,支持自嵌套形成复杂逻辑结构:

  • 显示/隐藏控制(PANELVISIBLE)
  • 启用/禁用控制(ITEMENABLE)
  • 空输入控制(ITEMBLANK)
  • 脚本事件处理(SCRIPTCODE_*)

3. PSDEFIUPDATE(表单项更新)

定义表单项值变化时触发的局部更新操作,包含:

  • PSDEFIUDETAIL(表单项更新成员)- 指定需要更新的具体表单成员

4. PSDEFIVR(表单项值规则)

定义表单项的值校验规则,支持:

  • 实体值规则(DEFVALUERULE)
  • 系统值规则(SYSVALUERULE)
  • 前后台校验配置

完整建模示例

//iBizModelDSL建模指令,目标:创建完整的订单编辑表单
def de_order = "Demo.ORDER"
psdeform(
  formtype: "EDITFORM", 
  codename: "MainForm", 
  name: "订单主编辑表单", 
  psdeid: de_order,
  layoutmode: "TABLE_24COL"
){
  // 表单分页 - 根级成员
  psdeformdetail(
    detailtype: "FORMPAGE", 
    name: "basic_info", 
    caption: "基本信息"
  ){
    // 分组面板 - 二级成员
    psdeformdetail(
      detailtype: "GROUPPANEL", 
      name: "order_group", 
      caption: "订单信息",
      layoutmode: "TABLE_24COL",
      child_col_md: 12
    ){
      // 表单项 - 三级成员(叶子节点)
      psdeformdetail(
        detailtype: "FORMITEM", 
        name: "order_name", 
        psdefid: de_order + ".OrderName",
        psdeformdetailname: "order_name"
      )
    
      // 表单项 - 三级成员(叶子节点)
      psdeformdetail(
        detailtype: "FORMITEM", 
        name: "order_status", 
        psdefid: de_order + ".Status",
        psdeformdetailname: "order_status"
      )
    
      // 表单按钮 - 三级成员(叶子节点)
      psdeformdetail(
        detailtype: "BUTTON",
        name: "submit_btn",
        caption: "提交",
        btnactiontype: "UIACTION",
        psdeuiactionid: de_order + ".Submit"
      )
    }
  }

  // 表单项值规则
  psdefivr(
    name: "name_validation",
    psdefiid: "order_name",
    psdefiname: "order_name",
    psdefvrid: de_order + ".NameRule",
    vrtype: "DEFVALUERULE"
  )

  // 表单项更新
  psdefiupdate(
    codename: "status_update", 
    name: "状态更新",
    psdeactionid: de_order + ".StatusUpdate"
  ){
    psdefiudetail(
      psdefiudetailname: "order_name_update",
      psdeformdetailid: "order_name"
    )
  }
}

应用场景

  1. 数据录入界面:用于实体数据的创建和编辑
  2. 搜索过滤界面:提供数据查询条件输入
  3. 复杂业务表单:支持多页签、分组、动态逻辑的复杂表单
  4. 移动端表单:专门适配移动设备的表单界面
  5. 数据验证表单:集成值规则校验的数据输入界面

表单面板通过丰富的成员模型和灵活的层级结构,为iBizModel提供了强大的界面构建能力,支持从简单到复杂的各种表单需求。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐