登录
注册
关于我们
简体中文
ENGLISH
搜索
购物车
0 ITEMS ON YOUR CART
首页
动态
方案
案例
专栏
期刊
联系我们
首页
期刊
[Ext JS 4] 实战之 Picker 和 Picker Field
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 4] 实战之 Picker 和 Picker Field
## [Ext JS 4] 实战之 Picker 和 Picker Field ### 前言 所谓的picker , 就是弹出一个选择框,让你选择一些信息。比如选择日期, 选择颜色等; 选择的结果总是要放在一个地方的,Picker Field 就是用来放置选择结果的一个文本框。 在Ext js中综合起来使用的方式就是, 在 form 里添加一个picker 类型的 field, 这个field比较特殊的是有一个点击按钮, 点击之后可以弹出一个选择框, 在选择框里选中的值添入filed 中。 ### Ext JS 中的Picker Ext JS 目前的版本有三种选择器 1. Date (Ext.picker.Date) 这个太常见的, 就是一个日期选择的窗口 2. Color (Ext.picker.Color) 颜色选择的窗口, 在office 中就经常看到 3. Time (Ext.picker.Time) 时间选择。 更通俗点说, 就是选择一天中的小时段。 选择的时间段是可以配置的。 简单的例子: ```javascript Ext.create('Ext.picker.Time', { width: 60, minValue: Ext.Date.parse('04:30:00 AM', 'h:i:s A'), maxValue: Ext.Date.parse('08:00:00 AM', 'h:i:s A'), renderTo: Ext.getBody() }); ``` 这三个选择器的定义位于Ext.picker包下,都是从 Ext.Component继承过来(除了Time, 另外两个都是直接继承)。 这不难理解, 其实选择器只不过是Ext 中的一种组件而已。 ### Ext JS中的Picker Field 最常用的日期选择栏位 Ext.form.field.Date (xtype: datefield), 后面有个日期按钮, 点击后弹出一个日期选择器。 看一下它的类层次结构: Ext.Component Ext.form.field.Base Ext.form.field.Text Ext.form.field.Trigger Ext.form.field.Picker Ext.form.field.Date Ext.form.field.Text 这是普通的form 输入框 Ext.form.field.Trigger - 从它开始就具有点击按钮的功能了。输入框最后可以显示一个按钮 Ext.form.field.Picker -- 这个比Trigger 功能更强大一些, 后面的实战开发的实例就会提到。(createPicker从这开始) 想一想机制, 其实很简单。对于picker 这种栏位, render 时多加一个按钮,点击按钮时会触发一个创建并显示选择器的事件。 ### 实战开发 这是本篇的重点部分。 在开发中, 除了Ext JS 本身的日期和颜色选择之外, 有时候需要定制一些特殊的选择,比如说人员的选择. 思路其实很清新, 1. 需要从Ext.form.field.Trigger 或是从 Ext.form.field.Picker 继承一个新的class. 2. 需要从Ext.Component 继承一个选择器的窗口 区别就是从Trigger ?还是从Picker 继承? 这里的例子是在一个grid 中, 有一列的编辑时是要求人员选择的picker. 想法一: 从Trigger 继承, 改写onTriggerClick的内容。 onTriggerClick这里面就是创建一个组件并显示。 showUserSelWindow 这个方法需要传入当前this 的目的就是为了选中之后可以设置field的值。 ```javascript Ext.define('Ext.ux.TextfieldUser', { extend: 'Ext.form.field.Trigger', alias: 'widget.textfielduser', xtype: 'textfielduser', triggerCls : 'user', // override onTriggerClick onTriggerClick: function() { showUserSelWindow(this); }, }); ``` 这种方式会出现的问题是: 在grid 中双击cell 变成编辑模式, 点击后面的按钮, 弹出选择的窗口, 这个时候发现后面的编辑的栏位又变成非编辑状态了。 这样的话,要设置选择后的值就很麻烦了,除非通过这个cell的id 找到这个cell , 设置它的html。 实在是太麻烦。 出现这个问题的原因是: 对与trigger 这种field , 失去焦点的话会触发blur 这个事件,而这个事件处理中就会改变编辑状态。 所以如果不需要回传值, 只是显示一些提示信息的话, 这个方式可以使用, 如果需要回传值, 就只能使用以下方式了。 想法二: 从Picker继承, 改写createPicker的内容。 ```javascript Ext.define('Ext.ux.TextfieldUser', { extend: 'Ext.form.field.Picker', alias: 'widget.textfielduser', xtype: 'textfielduser', triggerCls : 'user', // override onTriggerClick createPicker: function() { returnshowUserSelWindow(this); } }); ``` 从Picker继承的好处是它会保持在弹出选择窗口的同时, 原filed 保持编辑状态, 使用setValue 就可以完成值的设置。 唯一需要注意的地方就是: 默认产生的窗口的宽度跟field 的宽度是相同的。 所以需要的话, 可以设置选择窗口组件的 -minWidth
网站导航
首页
动态
方案
案例
专栏
期刊
联系我们