iBizModel 搜索栏(PSSYSSEARCHBAR)与搜索表单(PSDEFORM)模型详解
iBizModel搜索栏与搜索表单模型详解
引言
在iBizModel模型体系中,搜索栏(PSSYSSEARCHBAR)和搜索表单(PSDEFORM)作为界面交互的核心组件,分别承担着数据过滤搜索和复杂条件输入的重要职责。本文将从模型定义、应用场景、功能差异、关系结构及DSL建模等方面进行全面阐述,帮助开发者深入理解并正确应用这两类模型。
一、搜索栏模型(PSSYSSEARCHBAR)详解
下图示例了搜索栏的基本场景,包括了快速分组(支持分组操作),快速条件输入及自定义过滤等。
1.1 模型定义与核心属性
搜索栏是实体级的搜索部件模型,专为快速数据检索和条件过滤而设计。其核心属性包括:
- codename:唯一代码标识,在实体中必须唯一
- barstyle:搜索栏样式(如SEARCHBAR、SEARCHBAR2、MOBSEARCHBAR等)
- enablequicksearch:快速搜索模式(0-禁用,1-默认,2-高级)
- groupmode:过滤分组模式(SINGLE、AND、OR)
- quicksearchwidth:快速搜索框宽度
- psdeid:关联的实体引用
1.2 应用场景分析
场景一:基础快速搜索
适用于简单查询需求,用户通过关键词快速定位数据。如员工管理系统中按姓名模糊搜索。
pssyssearchbar(codename: "basic_search", quicksearchwidth: 500, name: "基本搜索栏", enablequicksearch: 2, mobflag: 0, psdeid: "HR.EMPLOYEE")
场景二:状态分组过滤
常见于数据状态筛选,如订单管理中的"全部/正常/异常"分组。
pssyssearchbar(quickgroupcnt: 3, codename: "status_filter", name: "状态过滤栏",enablequicksearch: 2, psdeid: "ORDER.MAIN") {pssyssearchbaritem(defaultflag: 1, itemtype: "GROUP", name: "all", caption: "全部")pssyssearchbaritem(itemtype: "GROUP", name: "active", caption: "正常", data: '{"searchconds":[{"condtype":"DEFIELD","fieldname":"status","condop":"EQ","value":"1"}]}')
}
场景三:多维度高级过滤
支持代码表引用和复杂条件组合,如按部门、职级等多条件筛选。
pssyssearchbar(codename: "adv_filter", barstyle: "SEARCHBAR2", name: "高级过滤",psdeid: "HR.EMPLOYEE") {pssyssearchbaritem(itemtype: "FILTER", name: "n_dept_id_eq", psdefid: "HR.EMPLOYEE.DEPT_ID",psdefsfid: "HR.EMPLOYEE.DEPT_ID.N_DEPT_ID_EQ", pscodelistid: "HR.DEPT_LIST", editortype: "DROPDOWNLIST")
}
1.3 成员模型架构
搜索栏通过嵌套成员实现功能扩展:
- PSSYSSEARCHBARITEM:定义具体搜索项(GROUP、FILTER、QUICKSEARCH类型)
- PSSYSSEARCHBARLOGIC:实现界面交互逻辑和动态行为
二、搜索表单模型(PSDEFORM)详解
下图示例了搜索表单的基本场景。
2.1 模型定义与类型区分
搜索表单是实体表单的特殊类型,专注于搜索条件的结构化输入:
- formtype:表单类型(SEARCHFORM用于搜索,EDITFORM用于编辑)
- enableadvsearch:是否启用高级搜索
- searchbtnpos:搜索按钮位置(RIGHT、BOTTOM)
- searchbtnstyle:按钮样式(DEFAULT、NONE、SEARCHONLY)
2.2 应用场景分析
场景一:简单条件搜索
基础表单项搜索,如按时间范围、状态值查询。
psdeform(formtype: "SEARCHFORM", codename: "simple_search", name: "简单搜索",psdeid: "ORDER.MAIN", enableadvsearch: 0) {psdeformdetail(detailtype: "FORMPAGE", name: "main_page") {psdeformdetail(detailtype: "FORMITEM", name: "n_date_range_gtandeq", psdefid: "SALES.ORDER.CREATEDATE",psdefsfitemid: "SALES.ORDER.CREATEDATE.N_CREATEDATE_GETANDEQ")}
}
场景二:复杂条件组合
支持多表单项、分组面板和条件联动的高级搜索界面。
psdeform(formtype: "SEARCHFORM", codename: "adv_search", name: "高级搜索",psdeid: "SALES.ORDER", enableadvsearch: 1) {psdeformdetail(detailtype: "FORMPAGE", name: "search_page") {psdeformdetail(detailtype: "GROUPPANEL", name: "base_group", caption: "基本信息") {psdeformdetail(detailtype: "FORMITEM", name: "n_order_no_like", psdefid: "SALES.ORDER.ORDERNO",psdefsfitemid: "SALES.ORDER.ORDERNO.N_ORDERNO_LIKE")psdeformdetail(detailtype: "FORMITEM", name: "n_customer_like", psdefid: "SALES.ORDER.CUSTOMER",psdefsfitemid: "SALES.ORDER.CUSTOMER.N_CUSTOMER_LIKE")}}
}
场景三:动态搜索表单
结合表单项更新逻辑实现条件动态响应。
psdeform(formtype: "SEARCHFORM", codename: "dynamic_search", name: "动态搜索") {psdeformdetail(detailtype: "FORMITEM", name: "category", psdefiupdateid: "update_fields")psdefiupdate(codename: "update_fields", name: "字段更新") {psdefiudetail(psdeformdetailid: "sub_category")}
}
2.3 成员模型体系
搜索表单通过丰富的成员类型支持复杂界面构建:
- PSDEFORMDETAIL:表单成员容器(FORMPAGE、GROUPPANEL、FORMITEM等)
- PSDEFDLOGIC:动态逻辑控制
- PSDEFIUPDATE:表单项更新机制
- PSDEFIVR:值规则校验
三、搜索栏与搜索表单的核心差异
3.1 功能定位差异
特性 | 搜索栏(PSSYSSEARCHBAR) | 搜索表单(PSDEFORM) |
---|---|---|
主要用途 | 快速过滤、分组浏览 | 复杂条件精确搜索 |
交互模式 | 即时响应、轻量操作 | 结构化输入、批量提交 |
条件复杂度 | 简单条件、预置分组 | 多字段组合、自定义条件 |
适用场景 | 列表页快速筛选 | 高级搜索页面 |
3.2 技术实现差异
搜索栏特点:
- 基于项(ITEM)的模块化设计
- 支持快速搜索和分组过滤
- 条件组合模式可配置(AND/OR/SINGLE)
- 与计数器、样式表深度集成
搜索表单特点:
- 完整的表单布局体系(栅格、Flex)
- 支持复杂的成员嵌套结构
- 具备完整的值校验和逻辑控制
- 与实体行为、界面动作紧密绑定
3.3 使用场景选择指南
- 选择搜索栏:当需要快速过滤、状态切换、简单关键词搜索时
- 选择搜索表单:当需要多条件组合、复杂查询逻辑、条件保存时
四、模型关系图例
五、完整建模DSL示例
5.1 综合搜索解决方案
// 定义实体引用
def de_product = "MALL.PRODUCT"
def mod_mall = "MALL"// 搜索栏定义 - 产品快速筛选
pssyssearchbar(codename: "product_search", name: "产品搜索栏", barstyle: "SEARCHBAR2", enablequicksearch: 2, groupmode: "AND", psdeid: de_product) {// 快速搜索项pssyssearchbaritem(itemtype: "QUICKSEARCH", name: "quick_search", placeholder: "输入产品名称或编码")// 分类分组pssyssearchbaritem(itemtype: "GROUP", name: "all", caption: "全部", defaultflag: 1, ordervalue: 100)pssyssearchbaritem(itemtype: "GROUP", name: "active", caption: "上架商品",data: '{"searchconds":[{"condtype":"DEFIELD","fieldname":"status","condop":"EQ","value":"1"}]}')// 价格过滤pssyssearchbaritem(itemtype: "FILTER", name: "n_price_range_gtandeq", psdefid: de_product + ".PRICE", editortype: "NUMBER")
}// 搜索表单定义 - 高级产品搜索
psdeform(formtype: "SEARCHFORM", codename: "product_adv_search", name: "产品高级搜索", psdeid: de_product, enableadvsearch: 1,searchbtnpos: "BOTTOM", searchbtnstyle: "DEFAULT") {psdeformdetail(detailtype: "FORMPAGE", name: "main_page", caption: "搜索条件") {psdeformdetail(detailtype: "GROUPPANEL", name: "base_info", caption: "基本信息", layoutmode: "TABLE_24COL") {psdeformdetail(detailtype: "FORMITEM", name: "n_product_name_like", psdefid: de_product + ".PRODUCT_NAME",psdefsfitemid: de_product + ".PRODUCT_NAME.N_PRODUCT_NAME_LIKE", col_md: 12, col_lg: 8)psdeformdetail(detailtype: "FORMITEM", name: "n_category_eq",psdefid: de_product + ".CATEGORY", psdefsfitemid: de_product + ".CATEGORY.N_CATEGORY_EQ",pscodelistid: mod_mall + ".CATEGORY_LIST",col_md: 12, col_lg: 8)psdeformdetail(detailtype: "FORMITEM", name: "n_price_range_gtandeq", psdefid: de_product + ".PRICE", psdefsfitemid: de_product + ".PRICE.N_PRICE_GTANDEQ",editortype: "NUMBER", col_md: 12, col_lg: 8)}}// 搜索表单逻辑psdeformlogic(name: "search_logic", triggertype: "CTRLEVENT",eventnames: "onBeforeSearch", dstlogictype: "DEUILOGIC",psdelogicid: de_product + ".VALIDATE_SEARCH_CONDITIONS")
}
5.2 更多示例
更多示例请访问iBizAppHUB示例系统,点击搜索表单
及搜索栏
菜单查看全部示例
通过最右侧的调试工具栏,可查看搜索栏
在iBizModeling
工具中的详细配置
六、最佳实践与总结
6.1 设计原则
- 用户体验优先:搜索栏注重效率,搜索表单注重精确度
- 渐进式披露:从简单搜索栏过渡到复杂搜索表单
6.2 技术建议
- 合理使用分组模式提升过滤效率
- 利用值规则确保搜索条件有效性
- 通过逻辑控制实现动态搜索体验
- 结合计数器提供搜索结果反馈
搜索栏和搜索表单作为iBizModel界面体系的核心组件,共同构建了完整的数据检索解决方案。搜索栏适用于快速的、模式化的过滤需求,而搜索表单则胜任复杂的、自定义的查询场景。在实际项目中,应根据具体业务需求灵活选择和组合使用,以达到最佳的用户体验和系统性能。