很久没有更新了……
在使用Ext JS作为前端开发框架时,避免了写原生态table之类的元素。现在有一需求是写可编辑单元格的表格,并且需要和后台数据动态绑定起来。下面就简单记录下过程,以便日后供自己和需要的同行参考~
前端部分(核心):
1)先写一个div容器
<div id="grid"></div>
2)js部分:
Ext.onReady(function(){ var column = new Ext.grid.ColumnModel([ {header:'描述',dataIndex:'memo',width:200, align:'center'}, {header:'时间',dataIndex:'time',width:200, align:'center'}, {header:'满意',align:'center', dataIndex:'satisfied',width:100,editor:new Ext.grid.GridEditor( new Ext.form.TextField({ allowBlank:false }) )}, {header:'一般',align:'center', dataIndex:'general',width:100,editor:new Ext.grid.GridEditor( new Ext.form.TextField({ allowBlank:false }) )}, {header:'不满意',align:'center', dataIndex:'unsatisfied',width:100,editor:new Ext.grid.GridEditor( new Ext.form.TextField({ allowBlank:false }) )}, ]); //这里就是从后台searchGrid方法获取数据的部分,填充到store里。 var store= new Ext.data.JsonStore({ //proxy:new Ext.data.MemoryProxy(data), proxy:new Ext.data.HttpProxy({ //type:'ajax', url:'./setting.do?method=searchGrid' }), fields:['id','memo','time','satisfied','general','unsatisfied'] //这些是要跟后台数据Map的key要一一对应的。 }); store.load(); var grid1=new Ext.grid.EditorGridPanel({ renderTo:"grid", store: store, height:200, clicksToEdit:1, cm:column }); });
//---------------------------------------------------------------------------------------------------------------------------
数据写死的话就是proxy:new Ext.data.MemoryProxy(data),其中data是类似以下这种数据结构:
var data = [
['新客户工作时间', '8:30-17:30', 4, 2, -1],
['新客户非工作时间', '17:30-8:30', 4, 2, -1],
['老客户五星以上工作时间', '8:30-17:30', 4, 2, -1],
['老客户五星以上非工作时间', '17:30-8:30', 4, 2, -1],
['老客户五星以下工作时间', '8:30-17:30', 4, 2, -1],
['老客户五星以下非工作时间', '17:30-8:30', 4, 2, -1]
];
//---------------------------------------------------------------------------------------------------------------------------
后台部分
searchGrid方法获取到的数据是一个List<Map<String, Object>> list结构的数据,而传递给前端的则是一个[{'id':1, 'name':'Lily', 'age':23, 'memo':'sssssssss'}, {'id':2, 'name':'Lily2', 'age':33, 'memo':'sssssssss'}, {'id':3, 'name':'Lily3', 'age':43, 'memo':'sssssssss'}, ...]形式的json, 即json串的数组。
JsonUtils.convertToString(list)
同样,要将EditorGrid表格数据提交给后台也需要提交一个类似结构的json串的数组,获取方式如下:
var data = []; for(var i=0; i<store.getCount(); i++) { var record = store.getAt(i); data.push(record.data); }
注意:一定要转换成后台能够接收到的结构:使用Ext.util.JSON.encode(data)或JSON.stringify(data)将json数组对象转换成字符串。此时后台接收是通过JSONArray来进行的:
JSONArray arr = JSONArray.fromObject(datas); for(int i=0; i<arr.size(); i++) { JSONObject obj = arr.getJSONObject(i); //获取各属性值用obj.get(key), 转换成int或double等数值用Integer.valueOf(obj.get(key).toStirng())或Double.valueOf(obj.get(key).toStirng()) }
至此,Ext的EditorGrid数据跟后台的动态绑定就记录完毕了。上一张效果图:
相关推荐
使用EXT的EditorGrid,实现前台页面对数据直接进行增删改查操作。用户的友好性较好,已经实现分页功能。例子中使用了DWR和JSON.含MySQL数据库脚本,并已加入Log4j日志记录。本例详细讲解可以参见:...
在这个"ext增删查改demo"中,我们可以看到是EXTJS在数据管理方面的应用,涉及到的主要知识点包括EXTJS的基础组件、数据模型、数据存储以及数据绑定。 1. EXTJS版本:此示例提及了EXTJS 3.1和2.2两个版本。EXTJS 3.x...
- **主要用途**:用于存储后台需要的额外数据。 **2.23 HTML Editor (Ext.form.HtmlEditor)** - **xtype**: `htmleditor` - **功能描述**:HTML Editor 是一个富文本编辑器。 - **主要用途**:适用于需要用户编辑...
1.2. 看看ext-1.1.1的文档 1.3. 看看ext-2.0的文档 1.4. 为什么有的例子必须放在服务器上才能看到效果? 1.5. 为什么自己按照例子写的代码,显示出来总找不到图片 1.6. 我们还需要什么? 1.7. 入门之前,都看hello...
Ext表格控件是一套功能丰富的网格组件,可以实现数据的展示、排序、编辑等功能。表格可以动态添加列,调整列宽,支持分页,甚至可以结合EditorGrid实现行的编辑和动态添加。Ext JS 2.0相较于1.x版本,表格控件的功能...
3. **数据绑定(Data Binding)**:Ext 4.1.0引入了强大的数据绑定机制,使得视图可以直接与数据源进行同步。这允许开发者通过更改模型数据,实时更新UI,反之亦然,实现双向数据绑定。 4. **Store(数据存储)**:...
1.2. 看看ext-2.0.2的文档 1.3. 为什么有的例子必须放在服务器上才能看到效果? 1.4. 为什么自己按照例子写的代码,显示出来总找不到图片 1.5. 我们还需要什么? 1.6. 入门之前,都看helloworld。 1.6.1. 直接使用...
* editorgrid:一个编辑器网格组件,用于编辑数据。 * grid:一个网格组件,用于显示数据。 * paging:一个分页工具栏组件,用于分页显示数据。 * panel:一个面板组件,用于容纳其他组件。 * progress:一个进度条...
在EXT JS库中,"ext的edittreegrid实现"是一种功能强大的组件,它结合了树形视图(Tree)和编辑网格(EditorGrid)的功能,允许用户在具有层次结构的数据上进行直观的编辑操作。这个组件对于那些需要管理结构化且...
EditorGrid是Ext提供的一种可编辑的表格控件,它允许用户直接在表格单元格内编辑数据,提升了用户体验。在这个实例中,开发者利用EditorGrid实现了实时编辑功能,用户可以直接在表格中修改数据,而无需跳转到新的...
9.2.2 从后台脚本获得分页数据 9.2.3 在表格顶部显示分页工具条 9.2.4 实现前台分页效果 9.3 可编辑表格控件——EditorGrid 9.3.1 制作第一个EditorGrid 9.3.2 添加一行数据 9.3.3 保存修改结果 9.3.4 验证...
3.9.2 通过后台脚本获得分页数据 49 3.9.3 分页工具栏显示在Grid的顶部 51 3.9.4 让EXT支持前台排序 52 3.10 后台排序 53 3.11 可编辑表格控件--EditorGrid 55 3.11.1 制作一个简单的EditorGrid 55 3.11.2 ...
它提供了丰富的用户界面组件,如数据绑定、网格、表单、菜单、树形结构等,使得开发人员能够创建功能丰富的交互式网页应用。本资源包含ExtJs的API文档、笔记以及示例,帮助开发者深入理解和使用ExtJs。 首先,API...
9.2.2 从后台脚本获得分页数据 9.2.3 在表格顶部显示分页工具条 9.2.4 实现前台分页效果 9.3 可编辑表格控件——EditorGrid 9.3.1 制作第一个EditorGrid 9.3.2 添加一行数据 9.3.3 保存修改结果 9.3.4 验证...
通过实践和阅读官方文档,开发者可以深入学习如何创建自定义组件、使用数据绑定、实现事件处理以及优化性能等高级主题。此外,ExtJS社区也非常活跃,提供了许多示例、插件和教程,帮助开发者解决实际问题。 总之,...
10. `editorgrid` - `Ext.grid.EditorGridPanel`:可编辑的表格,允许用户直接在表格中修改数据。 11. `grid` - `Ext.grid.GridPanel`:标准的表格组件,用于展示数据。 12. `paging` - `Ext.PagingToolbar`:分页...
ExtJS作为一款优秀的JavaScript框架,不仅提供了强大的UI组件,还支持多种布局管理方式、数据绑定机制以及事件处理等功能。通过深入学习其组件体系,开发者可以轻松构建出复杂而美观的Web应用界面。此外,了解如何...
11. **`editorgrid`** - `Ext.grid.EditorGridPanel`,可编辑的表格组件,允许用户直接在表格中编辑数据。 12. **`propertygrid`** - `Ext.grid.PropertyGrid`,属性表格组件,用于展示对象的属性。 13. **`...
- **`editorgrid` (Ext.grid.EditorGridPanel)**: 可编辑的表格组件,允许用户直接在表格内进行数据编辑。 - **`propertygrid` (Ext.grid.PropertyGrid)**: 属性表格组件,专门用于展示对象的属性。 - **`editor` ...