登录
注册
关于我们
简体中文
ENGLISH
搜索
购物车
0 ITEMS ON YOUR CART
首页
动态
方案
案例
专栏
期刊
联系我们
首页
期刊
[Ext JS 4] 实战之Grid, Tree Gird编辑
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] 实战之Grid, Tree Gird编辑
本篇这里以稍微复杂一点的Tree Grid 来介绍. 在写编辑grid 之, 先来看一下 grid 的 selType 的配置。 先给一个简单的Tree grid 的例子: Ext.onReady(function(){ var treeStore = Ext.create('Ext.data.TreeStore', { fields: ['id','name','sex','age'], root:{ "children":[{id:'001',name:'shu',sex:'',age:'',expanded: true, "children": [{id:'001_1',name:'liu.bei',sex:'male',age:'50'}, {id:'001_2',name:'guan.yu',sex:'male',age:'49'}, {id:'001_3',name:'zhang.fei',sex:'male',age:'48'}] } ] } }); var gridCols = [{xtype: 'treecolumn',text:'ID',dataIndex:'id'}, {text:'Name',dataIndex:'name'}, {text:'Sex',dataIndex:'sex'}, {text:'Age',dataIndex:'age'}]; var treeGrid = Ext.create('Ext.tree.Panel',{ title: 'Three KingDom', rootVisible: false, collapsible: true, store: treeStore, columns: gridCols, renderTo: Ext.getBody() });}); 默认情况下, 点击的时候是整行选取。 可以通过配置selType 进行配置, setType 配置的是 Ext.selection包下的Select Model 的 xtype. 可以配置: 1. rowmodel. 行选取, 默认的方式, 如果没有设置selType的话使用这个。 2. cellmodel。 单元格选取。 3. checkboxmodel。 checkbox 选取, 配置这个的话,会在grid 前加一列 check box 列 4. treemodel。 Cell 编辑模式 好了, 进入正题。对grid 进行编辑。 要对grid 进行编辑,需要以下两个步骤: 1. 给grid 添加edit 的 plugin var cellEditPlugin = Ext.create('Ext.grid.plugin.CellEditing', { clicksToEdit: 1 }); var treeGrid = Ext.create('Ext.tree.Panel',{ title: 'Three KingDom', rootVisible: false, collapsible: true, store: treeStore, columns: gridCols, plugins: [cellEditPlugin], renderTo: Ext.getBody() }); clicksToEdit : 1 是单击, 2 是双击 2. columns 中需要编辑的列添加 editor {text:'Name',dataIndex:'name',editor:{xtype:'textfield'}}, xtype 是编辑状态的组件, 是简单文本框,还是下拉单,或是其他的 Row 编辑模式 有了以上 cell 模式, Row 模式就简单了。 只是plugin 换成RowEditing 就可以了 var rowEditPlugin = Ext.create('Ext.grid.plugin.RowEditing', { clicksToEdit: 2 }) 而且这两种方式是可以并存的, 全部添加到grid 的plugins 的配置中就可以了。 全部编辑 不管是在row 或是cell的编辑模式下, 一次只能操作一行或一个单元格。 要编辑下一个, 当前的这个就会回到非编辑状态。 也就是, 看起来,只构造了一个editor 的组件, 大家轮着使用。 可是问题是, 如果有eidt all 这个按钮的话,点击之后, 所有可编辑的cell 全部置为编辑状态,使用现有的配置目前就无法达到了。 在 Ext 3 之前的版本, Ext js 的开发者有开发一个插件解决这个问题: http://www.sencha.com/forum/showthread.php?79232-EditableGrid-Shows-editors-for-all-cells 但是,也特别提出了,如果grid 的数据量很大的话, 这种方式的性能就不行了。 想想也是, 每个edit栏位都会新建一个复杂的组件, 性能肯定会受影响。 问题到这并没有解决, 那个插件只是在Ext 3 (或者以下)可以使用, 目前Ext 已经是 4 版本了。 Extjs 4 中并没有直接解决方法, 升级那个插件应该也挺费时的。 另外一种解法是在 配置col 的 render : renderer:function(value, metadata,record){} 在列显示之前, 把value 替换成这种输入框。 看上去不错。 但是如果需要的是commobox 的话呢, 1. renderer 只能返回字符串, 不能返回组件 2. field 组件本身也没有直接转成html 的方法。 3 自行组成 Ext js 的 commobox 的html 看上去也挺麻烦。 不过思路上还是要朝这个方向前进。 幸运的是已经有人把这个扩展完成了(在ext js 4之上) http://skirtlesden.com/ux/component-column 使用方式很简单, 现在两个js 文件 1.ctemplate.js http://skirtlesden.com/ux/ctemplate 2. component.js http://skirtlesden.com/ux/component-column 导入后, 如下方式定义 col{ ... dataIndex: 'status', xtype: 'componentcolumn', renderer: function(status) { return { ... store: ['Available', 'Away', 'Busy', 'Offline'], value: status, xtype: 'combobox' }; } }
网站导航
首页
动态
方案
案例
专栏
期刊
联系我们