ExtJs 实现表单联动

简介: 最近做的项目使用Extjs。遇到表单联动的业务。下面来说说主要实现思想:说明:表单联动一般存在从属关系,有大范围的对象和大范围中的小对象。比如地理位置的选定(例:浙江省-杭州市-某某县)。在这里,我将大范围的对象称为包含对象,大范围中的小对象称为被包含对象。

最近做的项目使用Extjs。遇到表单联动的业务。下面来说说主要实现思想:

说明:表单联动一般存在从属关系,有大范围的对象和大范围中的小对象。比如地理位置的选定(例:浙江省-杭州市-某某县)。在这里,我将大范围的对象称为包含对象,大范围中的小对象称为被包含对象。

表单联动针对ComboBox(组合框)。在实现时,将包含对象传入被包含对象中,在后台查询被包含对象时,使用传入的包含对象的某个值(一般为被包含对象的外键)作为condition,查询与其相关的被包含对象。实现指定的被包含对象查询。

还有一点注意的是:在将大范围对象传入小对象后,使用js的监听机制,监听当小对象(组合框)要expand(展开)时,加载与其大范围对象相关的所有小对象。这里通过一个大范围对象的某个参数作为查询小对象的条件。两个对象一般存在外键关联的关系。

实例化表单的代码

var chejianObject = new ChejianBox("所属车间","chejianId"); //实例化车间
var banzuObject = new BanzuBox("班组","emp.banzuId",chejianObject); //实例化班组
banzuObject.on('expand', function(comboBox){
    var chejianId = Ext.getCmp("chejianValue所属车间").getValue();
    this.getStore().load({
        params: {
        chejianId: chejianId
    }
    });
});

定义表单的代码

//班组定义
BanzuBox = Ext.extend(Ext.form.ComboBox,{
    constructor: function(labelName,hiddenName, chejianObject){
        //与部门表进行级联操作
    chejianObject.on('select', function(comboBox){
        var value = comboBox.getValue();
        Ext.getCmp('banzuValue'+labelName).setRawValue('');
        banzuStore.reload({
                params: {chejianId: value}
        });
    });
    BanzuBox.superclass.constructor.call(this,{
        id: 'banzuValue'+labelName,
        fieldLabel: labelName,
        displayField: 'banzuName',
        valueField: 'banzuId',
        hiddenName: hiddenName,
        width: 100,
        emptyText: '请选择',
        height: 100,
        store: banzuStore,
        triggerAction: 'all', //显示所有
        editable: false,
        allowBlank: false,
        msgTarget: 'side',
        blankText: '请选择'
    });
    }
});
//车间定义
ChejianBox = Ext.extend(Ext.form.ComboBox,{
    chejianStore: null,
    //注意传入参数labelName,因为其作id的一部分,避免出现相同的id
    constructor: function(labelName, hiddenName){
        chejianStore = new Ext.data.JsonStore({
        autoLoad: true, //设为自动加载,以便实现修改时选中某值
        url:'chejian_show.action',
        fields: ['chejianId','chejianName']
        });
    ChejianBox.superclass.constructor.call(this,{
        id: 'chejianValue'+labelName,
        fieldLabel: labelName,
        displayField: 'chejianName',
        valueField: 'chejianId',
        emptyText: '请选择',
        hiddenName: hiddenName,
        width: 100,
        store: chejianStore,
        triggerAction: 'all', //显示所有
        editable: false,
        allowBlank: false,
        msgTarget: 'side',
        blankText: '请选择'
    });
    }
});
相关文章
|
JavaScript 前端开发 容器
Element概述、入门案例及布局
Element概述、入门案例及布局
379 0
|
存储 消息中间件 缓存
Redis 简介
10月更文挑战第14天
362 58
|
运维 监控 jenkins
Jenkins有哪些优势和劣势
【10月更文挑战第18天】Jenkins有哪些优势和劣势
634 2
|
安全 测试技术 Linux
浅谈黑客赚钱黑产
浅谈黑客赚钱黑产
|
传感器 机器学习/深度学习 自动驾驶
未来出行的革新:无人驾驶技术深度解析
在当今科技飞速发展的时代,无人驾驶技术正逐步从科幻走向现实,成为未来交通领域最具革命性的变化之一。本文旨在深入探讨无人驾驶技术的工作原理、关键技术组件以及面临的伦理与法律挑战,并展望其对社会经济和日常生活的深远影响。通过分析感知、决策和执行三个核心环节,本文揭示了无人驾驶汽车如何利用先进的传感器阵列、复杂的算法和精密的机械控制来实现自主行驶。同时,文章也讨论了数据安全、隐私保护及责任归属等问题,呼吁建立相应的法规框架以促进技术的健康发展。最后,无人驾驶技术被预测将为减少交通事故、缓解拥堵、提高能效及推动共享经济等方面带来显著益处,预示着一个更加智能、高效和可持续的出行未来。
|
弹性计算 网络协议 网络安全
内网DNS解析&VPN网关联动实现云上访问云下资源
内网DNS解析&VPN网关联动实现云上访问云下资源
|
Java 应用服务中间件 Windows
2022年最新最详细的tomcat安装教程和常见问的解决
这篇文章提供了2022年最新最详细的Tomcat安装教程,包括离线安装包的获取、官网下载步骤、JDK版本检查、环境变量配置,以及解决安装过程中可能遇到的常见问题,如乱码等。
2022年最新最详细的tomcat安装教程和常见问的解决
|
Oracle 安全 小程序
二维码固定资产管理系统,中小微企业的合适之选
我们发现,一种成本效益更高的解决方案——二维码资产管理,正逐渐成为中小微企业的新选择。
|
数据采集 存储 监控
一站式数据采集存储的利器:阿里云InfluxDB®️数据采集服务
阿里云InfluxDB®除了提供稳定可靠的时序数据库服务,还提供了非常便捷的数据采集服务。用户能够方便查看各个采集源的运行状态并管理它们,采集的数据会自动存储到阿里云InfluxDB®。用户无需担心运维的问题,实现数据从采集到分析的一站式服务。
3042 0
|
机器人 数据管理 vr&ar
数字孪生线程
数字孪生线程
726 0
数字孪生线程

热门文章

最新文章