登录
注册
关于我们
简体中文
ENGLISH
搜索
购物车
0 ITEMS ON YOUR CART
首页
动态
方案
案例
专栏
期刊
联系我们
首页
期刊
Ext JS下拉单选框(Combobox,TagFied)使用及疑难问题解决
Ext JS开发大全
第1章 Ext JS快速入门示例[4/4]
第12章[12.10]富文本编辑器 CKEditor与Ext JS的整合
第12章[12.10.1] Ext JS + CKEditor+Spring Boot 实现编辑器图片上传
第11章[11.6] Ext JS 自行搭建远端库的包升级版本后找不到的问题解决
[Ext JS 4] 实战之Grid, Tree Gird编辑
ext命令集
第12章[12.3] Ext JSGrid中的超链接列及其功能实现
[Ext JS]textfield添加compositionstart、compositionupdate 和compositionend _os
[Ext JS ] 动添切换字段的必填与非必填
3.1 Ext JS 组件总览
[Ext JS] Grid表格批量编辑的实现
Ext JS 快速开发工具
带触发器按钮的输入框
Ext JS的布尔对象类型处理及便捷方法
Ext JS的Object类型处理及便捷方法
ExtJS RadioGroup(单选按钮组) 使用及注意事项
Ext JS 模拟后端数据实现
ToolTip 实现全介绍
Ext JS下拉单选框(Combobox,TagFied)使用及疑难问题解决
Ext JS应用测试概览
Sencha Studio 监视工具( Inspect Tool)
Ext JS 4 升级指南
Ext JS 如何定义公用方法(单例类 or 静态方法)
Ext JS的模块化开发(Package)
Ext3 -- Form 实例。 用来migrate file 数据到DB用的
ExtJS 3 在Tab下加入Form 实例
Extjs Grid 中给已经添加过Filter的列增加标识
Extjs 实战之 Ext.tree.TreePanel Tree无法显示
Extjs弹出框的异步执行
Grid 动态该表列( reconfigure)的性能改善
Spring Boot Ext JS准前后端框架应用的会话(Session)处理
[Ext JS 4] Extjs 图表 Legend(图例)的分行与分列显示
[Ext JS 4] Extjs 之 initComponent 和 constructor的区别
[Ext JS 4] Grid 中的单元格添加Tooltip 的效果
[Ext JS 4] Grid 实战之分页功能
[Ext JS 4] Grid 组件
[Ext JS 4] MVC 应用程序框架
[Ext JS 4] MVC 应用程序框架
发布 [Ext JS 4] contentEL,renderTo, applyTo 释义与区别
[Ext JS 4] 动态加载
[Ext JS 4] 实战之 ComboBox 和 DateField (消失之解决办法)
[Ext JS 4] 实战之 Picker 和 Picker Field
[Ext JS 4] 实战之 带week(星期)的日期选择控件(二)
[Ext JS 4] 实战之 ComboBox 和 DateField 的点击事件在IE下失效
## [Ext JS 4] 实战之 带week(星期)的日期选择控件(三)
[Ext JS 4] 实战之 带week(星期)的日期选择控件
[Ext JS 4] 实战之Chart 坐标控制(单坐标,双坐标)
[Ext JS 4] 实战之Chart, Column Chart 定制颜色
[Ext JS 4] 实战之Grid, Tree Gird 动态添加列
[Ext JS 4] 实战之Grid, Tree Gird 动态添加列续(性能考虑)
[Ext JS 4] 实战之Grid, Tree Gird 动态添加行
[Ext JS 4] 实战之Grid, Tree Gird 添加按钮列
[Ext JS 4] 实战之Grid, Tree Gird编辑Cell
[Ext JS 4] 实战之Load Mask - 在Grid Reconfigure的使用状况
[Ext JS 4] 实战之Load Mask(加载遮罩)的显示与隐藏
[Ext JS 4] 实战之多选下拉单 (带checkbox) 续 - 带ALL 选项
[Ext JS 4] 实战之多选下拉单 (带checkbox)
[Ext JS 4] 实战之升级系列一[Ext jS 3-->Ext JS 4]
[Ext JS 4] 实战之将chart导出为png, jpg 格式的文件
[Ext JS 4] 实战之浏览器兼容
[Ext JS 4] 布局之实战二 - 中间区块不会自动伸展 (tab)续
[Ext JS 4] 组件之图表
[Ext JS 4]后台自动产生图档
[Ext JS 4]性能优化
[Ext JS 7 ]7.5 自适应配置 - Responsive Configs
[Ext JS 7] 关联(Association)
[Ext JS 7]事件(Event)
[Ext JS 7]ClassRequire错误解决
[Ext JS 7]的开发模式
[Ext JS 7]基于NPM的开发
[Ext JS ] 动添切换字段的必填与非必填
[Ext JS4] 数据包
[Ext JS4系列]Ext JS4 入门
[Ext JS6] Grid不同列的关联编辑
[Ext JS6] ViewControllers-视图控制器
[Ext JS6]Ext.Template
[Ext JS6]Sencha Cmd
[Ext JS6]编码规范
[Ext JS6]多类型设备开发
[Ext JS6]工作区-Workspace
[Ext JS6]路由(Routing)及使用
[Ext JS6]视图模型和数据绑定
[Ext JS6实战] Ajax获取Tree Store
[Ext JS6实战] Ext.XTemplate
[Ext JS6实战]动态数据绑定
[Ext JS] Sencha Cmd命令参考之二
[Ext JS] Sencha Cmd命令参考之一
[Ext JS] Group Grid-分组网格
[Ext JS] Group Grid-分组网格
[Ext JS]嵌套Grid的实现及注意事项
[Ext JS]SimXhr.js__dc=1659315492151_65 Uncaught TypeError问题分析与解决
[Ext JS]Sencha Studio安装与快速介绍之一
[Ext JS]textfield 添加 compositionstart、compositionupdate 和 compositionend
[Ext JS]图片显示方式
[ExtJS 6]Grid分页工具栏无效问题解决
[ExtJS6]ResponsiveColumn-自适应列布局
[Extjs 4] 类系统
基于Ext JS的模块化应用框架搭建及开发
[Ext JS] 自行搭建远端库的包升级版本后找不到的问题解决-The following versions are available
[Ext JS]鼠标移入移除时弹出和关闭窗口
[Ext JS]富文本编辑器 CKEditor与Ext JS的整合
[Ext JS]可编辑列Grid的全场景开发
['Ext JS]Grid中的超链接列及其功能实现
[Ext JS]Ext JS + CKEditor+Spring Boot 实现编辑器图片上传
[Ext JS]介绍与快速入门1
[Ext JS]实现带动态数字的图标
Spring Boot+Ext JS 实现图形验证码
Ext JS介绍与快速入门2
Ext JS开发基本环境准备与项目创建
[Ext JS]开发模式及快速测试方式
[Ext JS]多类型终端-电脑、移动端(手机、平板)
[Ext JS]基于Ext JS的MVC/MVVM架构的应用开发模式
[Ext JS]Ext JS的类与类体系
[Ext JS]Ext JS组件、容器与布局
[Ext JS]组件与容器的选择与开发
[Ext JS]Ext JS数据模型与数据封装
[Ext JS]Ext JS的控制器类型及使用
[Ext JS]说透Ext JS的窗口及对话框用法
[Ext JS]说透Ext JS的窗口及对话框用法
[Ext js]Grid行选择的多种场景和实现方式
[Ext JS]Ext JS类的继承与混合
CmsWing
Ext JS下拉单选框(Combobox,TagFied)使用及疑难问题解决
## Ext JS下拉单选框(Combobox,TagFied)使用及疑难问题解决 ### Ext JS下拉框字段组件 在Ext JS中,下拉框选择的字段组件主要有两种, 分别是Combobox 和TagField, 这两种都支持单选和多选, 呈现的效果如下: Combobox 对应的类是:Ext.form.field.ComboBox , 虽然支持多选配置,但多选的配置是废弃的, 不建议使用。 TagField对应的类是:Ext.form.field.Tag , 一般用来选择多个值,也可以选择单个值,如果是单个值的,感觉意义不大。 Ext.form.field.Tag 从Ext.form.field.ComboBox 继承而来。 使用建议如下: 单选 多选 ComboBox 常用 不建议使用 TagField 一般使用较少 常用 ### Combobox 的开发 配置式开发 ```json { xtype: 'combobox', fieldLabel: 'Combobox(单选)', store: ['关羽', '张飞', '黄忠', '马超'] } ``` 实例创建型开发 ```javascript Ext.create('Ext.form.field.ComboBox', { fieldLabel: 'Combobox(单选)', store: ['关羽', '张飞', '黄忠', '马超'] }) ``` multiSelect ,[已经废弃,不建议使用] 设置多选 ### TagField (标签字段) 的开发 配置式开发 ```javascript { xtype: 'tagfield', fieldLabel: 'TagField', store: ['关羽', '张飞', '黄忠', '马超'] } ``` 实例创建型开发 ```javascript Ext.create('Ext.form.field.Tag', { fieldLabel: 'TagField', store: ['关羽', '张飞', '黄忠', '马超'] } ``` multiSelect , 设置为false 为单选, 默认式多选 autoSelect : 在弹出的下拉框选项中默认选中第一个。 效果类似: ![](/upload/picture/2022-09-27/upload_847cb66820e960432ab821f75c8aa2aa.png) autoSelectLast : 在弹出的下拉框选项中默认选中最后一个。 filterPickList:该值设置为true 的效果是: 已经选中的值就不出现在下拉单中了, 也就是如果全部选中的话,下拉单就没有选项了。设置后的效果如下: ![](/upload/picture/2022-09-27/upload_7ab15ad1fcd7a6186c771768c18c1446.png) 如果不设置这个属性,或者设置这个属性为false , 则默认的效果是: ![](/upload/picture/2022-09-27/upload_cba0dbc63b78f4a8477f01c4d07d8038.png) 上面选中的值会以反色显示,如果需要取消选择,再点击一次即可。 ### TagField在使用后端数据状况下的使用问题 如果Store的数据是从后端获取的。类似: ```javascript { xtype: 'tagfield', fieldLabel: 'TagField', autoSelect: true, valueField:'value', displayField:'value', store: new Ext.data.JsonStore({ proxy: { type: 'ajax', url: 'http://localhost:8080/extjs/tagfield', reader: { type: 'json', rootProperty: 'datas' } }, fields:['value'] }) ``` 使用后端数据时, 如何使用value 设置默认值呢? 首先使用getValue() 获取选中的值看看, 选中两个值,获取的值类似:关羽,黄忠 , 也就是以逗号分隔的值。 所以使用value:'关羽,黄忠', 设置默认值, 发现无效。 使用 setValue() 设置值, mytagfield.setValue('关羽,黄忠'); , 页面同样没有任何显示,但是使用 getValue() 却能获取到值。 也就是, 值设置上了, 但是显示不了, 怎么办? 答案就是要增加配置 autoLoadOnValue:true, , 这个配置的意思就是在设置值时, 默认加载后端数据。也就是数据加载后才能显示下拉项, 有下拉项才能显示选中的值。 设置的值不会再下来单中自动反选的解决 可是,接下来有一个奇怪的问题, 就是在设置默认值之后,** 在点击下拉选项,默认值并没有在下拉选项中反选**, 这样的话对于设置的默认值就可以选到两次,而且通过下拉选项无法去除之前设置的默认值, 效果类似下图: 分析这个原因: 在首次点击组件时,会从后端加载数据, 虽然之前设置默认值的时候有获取过数据, 这里还是会调用一次, 而且基本找不到可以用来禁止记载的配置。 通过源代码调试到底发生了什么会导致刷新Store, 在以下代码段找到了答案: queryPlan.query 的值是 “”, me.lastQuery 的值是 false, 如果能在设置值之后将组件的lastQuery 的值设置为“”(空字串) 是否问题就解决了? 首先来看一下lastQuery 的作用: lastQuery用来过滤Store 中的值,把此属性的值删除会导致重新刷新 Combox 类型的组件要使触发器不清除存储的过滤器,可以设置lastQuery 的值为 “” 。 解决方法就是在TagField 的beforequery 事件中设置该值,设置代码如下: ```javascript listeners: { beforequery: function(tagfield){ tagfield.combo.lastQuery = ''; } } ``` 注意: 以上是 7.x 版本的解法,设置组件的combo的lastQuery 的值。 在6.x 版本中可以直接设置属性的lastQuery 的值, 而且不限定在beforequery事件中执行,可以在按钮执行方法中执行, 但是在 7.x 版本中看起来不行。 ### 本篇代码及在线示例 前端演示 https://osxm.github.io/extjs_dev_ency/#valueselectfielddemo 注意: 取后端数据需要使用启动以下后端代码的应用才能生效。 后端代码: https://github.com/osxm/demoworkspace/blob/master/spring/springboot/src/main/java/cn/osxm/springboot/controller/ExtjsController.java
网站导航
首页
动态
方案
案例
专栏
期刊
联系我们