登录
注册
关于我们
简体中文
ENGLISH
搜索
购物车
0 ITEMS ON YOUR CART
首页
动态
方案
案例
专栏
期刊
联系我们
首页
期刊
[Ext JS] Grid表格批量编辑的实现
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] Grid表格批量编辑的实现
Grid使用表格的形式显示数据, 在实际的场景中, 除了查看数据之外, 往往还有在表格中直接编辑数据的需求。编辑的方式有: - 单行编辑 - 批量编辑 单行编辑可以通过行编辑插件(Ext.grid.plugin.RowEditing )或者单元格编辑插件( Ext.grid.plugin.CellEditing )实现,批量编辑的实现在不同的Ext JS 版本中有不同的实现方式。 Ext JS 5 及之后版本的编辑列 - widgetcolumn 在Ext JS 5.0.0 之后, Ext JS 提供了专门的可以用于编辑的列类型——组件列(Ext.grid.column.Widget),组件列的用途就是这一列可以定义成需要的组件形式, 也就包含输入框或者下拉框等组件, 进而也就实现了对这一列批量编辑的效果。使用上也很简单, 就是在定义Grid的columns 时, 把需要编辑的列的xtype 定义为widgetcolumn,然后通过widget定义组件类型, 举例来看: ```javascript { xtype:'grid', title:'widgetcolumn实现列批量编辑', columns:[{ text:'武将名', dataIndex:'name' },{ text:'级别', dataIndex:'level', xtype:'widgetcolumn', widget: { xtype:'textfield' } }], store:store } ``` 以上显示的效果如下图: ![](/upload/picture/2022-09-27/upload_60be1a8dfa3ef41981b96a89a06a3f2d.png) 上面的演示代码只是显示了效果, 从功能上了说上面的的代码还少了一句, 就是输入框的显示和Store数据之间的绑定, 也即是当输入框的值发生改变的时候, 是否能立即反应到Store 对应的数据呢?这也是ViewModel 的作用, 视图和模型数据的绑定。 要实现绑定, 需要加上类似 bind: '{record.level}' 的代码, 所以考虑功能,上面widget 的完整定义是: ```javascript widget: { xtype:'textfield', bind: '{record.level}' } ``` 在实际开发场景中, 可能会遇到这种需求: 如何能让某些特定的行不可以编辑呢? 批量编辑中某些特定的行不需要编辑 当某一行的数据满足某些条件时, 不需要进行编辑了,以上面的例子来说,假设剧情发展到关羽败走麦城, 被斩于临沮, 则关羽一行就不需要编辑了。 最直观想到的解法是: 是否满足条件行所对应的列的widget 隐藏起来就可以了呢? 答案是这个解法行不通, 因为隐藏了组件, 对应的数据也就不显示了。 不能输入, 还可以通过设置组件的readonly 来实现, 但是, 仅设置readonly , 输入框的边框和底色还是存在,消除边框和底色可以通过设置CSS 样式达成。 所以, 最终的解法是: 设置readonly + 设置CSS。具体实现通过 onWidgetAttach 进行设置, 示例代码如下: javascript { text: '级别', dataIndex: 'level', xtype: 'widgetcolumn', widget: { xtype: 'textfield', bind: '{record.level}' }, onWidgetAttach: function(col, widget, rec) { if('关羽' == rec.get('name')){ widget.setReadOnly(true); widget.addCls('my-display-input'); } } } 实现的效果如下图: ![](/upload/picture/2022-09-27/upload_979ad208e921cd2b9751a276b1d6072f.png) 关于WidgetColumn 的更多使用, 可以参考: 5.10 Ext JS Grid中 WidgetColumn(组件列)的使用 Ext JS 4 的批量编辑的扩展类类型 - componentcolumn 在Ext JS 4和之前的版本,官方并没有提供 widgetcolumn 的类型,遇到批量编辑的需求可以通过一些曲线的方式达成, 但较为便捷的还是使用第三方提供的扩展实现-componentcolumn。要使用这个扩展,需要导入两个文件: CTemplate.js Component.js 导入这两个文件之后, 同样是使用 xtype 定义列类型, 类型是’componentcolumn’,但是组件的定义则是使用renderer (渲染器)的方式, renderer 一般使用在对值进行渲染, 比如增减字串,设置加粗、颜色样式等。 在这里使用renderer 返回组件的配置对象, 类似: ```javascript { text: '级别', dataIndex: 'level', xtype: 'componentcolumn', renderer: function (level) { return { xtype: 'textfield', value: level } } } ``` 这种方式的最终实现的效果和上面类似: ![](/upload/picture/2022-09-27/upload_f96c4f204feb6d2e3c77624f88ffc4c8.png) 该方式在处理某些行不需要编辑模式的场景更为简洁, 只需要更改renderer 配置的xtype为displayfield 就可以了。 关于componentcolumn 的详细使用可以参考: [Ext JS 4] 实战之Grid, Tree Gird编辑Cell 本篇在线演示地址 https://osxm.github.io/extjs_dev_ency/demos/chp05/grid-batchedit.html ![](/upload/picture/2022-09-27/upload_e7884046029ba453bc2b0fd67c3e607e.png)
网站导航
首页
动态
方案
案例
专栏
期刊
联系我们