最近做的项目使用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: '请选择'
});
}
});

ExtJs 实现表单联动的更多相关文章

  1. Extjs form 表单的 submit

    说明:extjs form表单的提交方式是多种多样的,本文只是介绍其中的一种方法,本文介绍的方法可能不是完美的,但是对于一般的应用应该是没有问题的.     本文包括的主要内容有:form面板设计.f ...

  2. ExtJS 4 表单

    Form Panel表单面板就是普通面板Panel增加了表单处理能力.表单面板可以用在任何需要收集用户提交数据的地方.表单面板可以使用Container Layout提供的最简单的拜访表单控件的方式. ...

  3. Extjs之表单提交

    Extjs的三种提交方式: 表单Ajax提交,普通提交,单独Ajax提交: 表单Ajax提交(默认提交方式) 提交函数:当按下表单中的提交按钮时执行下面的 btn函数,按照表单的 name进行提交. ...

  4. ExtJS 同行表单域对齐有误处理办法

    更新记录 2022年5月29日 第一次编辑.使用的ExtJS版本:ExtJS 7.4 问题 原本都是显示正常的表单域,比如这些文本框.选择框都是正常. 在用户进行操作,然后显示验证提示后,明显出现了问 ...

  5. ExtJs之表单(form)

    --Form和Form Basic Extjs Form和Form Basic是两个东西,Form提供界面的展示,而Form Basic则提供数据的处理.验证等功能.每一个Form Panel在创建的 ...

  6. ExtJs 下拉单联动,次级下拉框查询模式

    queryMode : 'local' 如果下拉框的值是本地数据,最好设定queryMode为local,这样可以提高用户的响应速度

  7. Jquery实现下拉联动表单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. antd 表单双向绑定的研究

    痛点 在使用antd的表单时,大家觉得不够清爽,总结如下: 大量的模板语法,需要一定的学习成本. 需要手动地进行数据绑定,使用大量的onChange/setFieldsValue去控制数据. 无法通过 ...

  9. 💡我们的表单解决方案 el-form-renderer

    前言 本文将介绍我们的表单解决方案 @femessage/el-form-renderer,展示我们在 Vue 技术栈下,我们是如何处理以下问题的: 表单项动态显示或隐藏 表单数据联动 表单输入/输出 ...

随机推荐

  1. Linux Process VS Thread VS LWP

    Process program program==code+data; 一个进程可以对应多个程序,一个程序也可以变成多个进程.程序可以作为一种软件资源长期保存,以文件的形式存放在硬盘 process: ...

  2. 去掉Actionbar下的shadow

    <item name="android:windowContentOverlay">@null</item> http://www.cnblogs.com/ ...

  3. Linux Shell编程入门

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  4. WPF 开源Chart控件

    控件: Icon URL   Supplier Dynamic Data Display 2009

  5. Shiro - 限制并发人数登录与剔除

    import org.apache.shiro.cache.Cache; import org.apache.shiro.cache.CacheManager; import org.apache.s ...

  6. 第7章 权限管理(1)_ACL权限

    1. ACL权限 1.1 ACL权限简介与开启 (1)ACL权限简介 ①ACL是Access Control List的缩写,主要目的是在提供传统的owner,group,others的read,wr ...

  7. Spring框架总结

    Spring(由Rod Johnson创建的一个开源框架) Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建.简单来说,Spr ...

  8. jdbc java数据库连接 5)CallableStatement 接口

    CallableStatement执行存储过程(也是预编译语言) 首先在sql中执行以下带有输入参数的代码: DELIMITER $ CREATE PROCEDURE pro_findById(IN ...

  9. jmeter(三)Sample之SOAP/XML-RPC Request

    项目背景:公司的微信端H5界面新开发了会员注册功能,需要对其进行压力测试 项目目标:需要承受每分钟最少6000的压力 一.建立一个测试计划(test plan) 之前有说过,jmeter打开后会自动生 ...

  10. KVO设计模式

    一,概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知.简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应 ...