想让用户体验更高就应该让用户可以在自己刚刚查询出来的数据表格上进行数据编辑,可以进行增删改查。可编辑的表格就在在想要能编辑的列里注册一个TextField组件,这个组件需要使用Ext.grid.GridEditor类来封装。

第一个可编辑表格

[javascript] view plaincopy
  1. cm = new Ext.grid.ColumnModel([
  2. new Ext.grid.RowNumberer(),
  3. {header:'产品编号',dataIndex:'product_id'},
  4. {header:'产品名称',dataIndex:'product_name',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false}))},
  5. {header:'产品价格',dataIndex:'product_price',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false}))}
  6. ]);

使用了可编辑的对象就需要建立一个Ext.grid.EditorGridPanel来代替Ext.grid.GridPanel。

[javascript] view plaincopy
  1. gridPanel = new Ext.grid.EditorGridPanel({
  2. autoHeight: true,
  3. renderTo: 'grid',
  4. store: store,
  5. cm: cm,
  6. });

这时默认的是双击编辑,如果想设置成单击编辑的话就需要做如下改动。

[javascript] view plaincopy
  1. gridPanel = new Ext.grid.EditorGridPanel({
  2. autoHeight: true,
  3. renderTo: 'grid',
  4. store: store,
  5. //值为1的时候就是单击,2就是双击。
  6. clicksToEdit:1,
  7. cm: cm,
  8. sm:mm
  9. });

向表格中添加新行和删除一行

       添加新的一行是使用Store类的insert方法插入一个新的Ext.data.Record对象,删除用的是remove方法,为了使插入的新行所有列都能编辑,我们要把所有列都设为可编辑。

[javascript] view plaincopy
  1. cm = new Ext.grid.ColumnModel([
  2. new Ext.grid.RowNumberer(),
  3. mm,
  4. {header:'产品编号',dataIndex:'product_id',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false}))},
  5. {header:'产品名称',dataIndex:'product_name',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false}))},
  6. {header:'产品价格',dataIndex:'product_price',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false}))}
  7. ]);

将所想要编辑的列添加Ext.grid.GridEditor对象就能是该列可编辑,接着我们要在表格组件的上方添加两个按键,分别是增加和删除。代码如下:

[javascript] view plaincopy
  1. var gridPanel = new Ext.grid.EditorGridPanel({
  2. autoHeight: true,
  3. renderTo: 'grid',
  4. store: store,
  5. cm: cm,
  6. tbar: new Ext.Toolbar(['-', {
  7. text: '添加一行',
  8. handler: function(){
  9. var record = new Ext.data.Record({
  10. product_id:'',
  11. product_name:'',
  12. product_price:''
  13. });
  14. gridPanel.stopEditing();
  15. store.insert(store.getCount(),record);
  16. gridPanel.startEditing(store.getCount()-1,0);
  17. }
  18. }, '-', {
  19. text: '删除一行',
  20. handler: function(){
  21. Ext.Msg.confirm('信息', '是否删除当前记录?', function(btn){
  22. if (btn == 'yes') {
  23. var sm = gridPanel.getSelectionModel();
  24. var cell = sm.getSelectedCell();
  25. var record = store.getAt(cell[0]);
  26. store.remove(record);
  27. }
  28. });
  29. }
  30. }, '-'])
  31. });

保存数据

无论是添加或是修改了表格中的数据后,一般我们都要将结果提交到服务器,在ExtJS中Slice类就是干这个用的。

[javascript] view plaincopy
  1. {
  2. text: '保存',
  3. handler: function(){
  4. var m = store.modified.slice(0);
  5. var data = [];
  6. Ext.each(m, function(item) {
  7. data.push(item.data);
  8. });
  9. alert(Ext.encode(data));
  10. Ext.lib.Ajax.request(
  11. 'POST',
  12. 'SaveData',
  13. {success: function(response){
  14. Ext.Msg.alert('信息', response.responseText, function(){
  15. store.reload();
  16. });
  17. }},
  18. 'row=' + encodeURIComponent(Ext.encode(data))
  19. );
  20. }
  21. }

对记录进行分组 

此外ExtJS Grid还可以对数据进行分组,要建立一个按列分组的表格就要使用Ext.data.GroupingStore这个类。

[javascript] view plaincopy
  1. var store = new Ext.data.GroupingStore({
  2. reader: reader,
  3. data: data,
  4. groupField: 'sex',
  5. sortInfo: {field: 'name', direction: "ASC"}
  6. });
  7. var grid = new Ext.grid.GridPanel({
  8. autoHeight: true,
  9. store: store,
  10. columns: columns,
  11. view: new Ext.grid.GroupingView(),
  12. renderTo: 'grid'
  13. });

ExtJS各种各样的组件和控件有很多,做的都很漂亮,还可以自己定制样式,使用继承来拓展ExtJS的功能,ExtJS的介绍就到这了,更多的功能我今后还会继续研究的。

ext Grid(三)相关推荐

  1. Ext.grid.GridPanel + asp.net 数据分页

    Ext.grid.GridPanel + asp.net 数据分页 [转]http://www.cnblogs.com/tujiang/archive/2009/07/03/1516488.html ...

  2. ext+dwr DynamicGridPanel 封装 态创建ext grid

    封装一个动态grid 继承Ext.grid.GridPanel 1.一般只需定义gridcolumns属性即可动态生成grid ,支持各列renderer自定义, 支持store自定义. 其中默认的s ...

  3. Ext.grid.ColumnModel

    http://szz0429-126-com.iteye.com/blog/978195 http://www.studyofnet.com/news/136.html (非原创) 2.如何在表格中添 ...

  4. Ext.grid.ColumnModel基本设置(转自网易博客itworkto)

    Ext.grid.ColumnModel     该类用于定义表格的列模型,其配置项是一个由"列定义"组成的数组,还可以是JSON组成的对象.其中也定义很多操作列的 属性.方法 比 ...

  5. [转]Ext Grid控件的配置与方法

    http://www.blogjava.net/wangdetian168/archive/2011/04/12/348651.html 1.Ext.grid.GridPanel 主要配置项: sto ...

  6. ExtJs之Ext.grid.GridPanel(部分未完)

    今天在家休息,年假不用就作费啊. 看了几部香港老电影,陪爸爸看了勇士占奇才, 然后,测试了一下EXTJS未完的内容, 在京东上订了七本历史普及书,近两百块..:) 搞定. ? 1 2 3 4 5 6 ...

  7. Ext.grid.Panel表格分页

    Ext.grid.Panel表格分页示例 代码: cshtml @{Layout = null; } <!DOCTYPE html> <html> <head>&l ...

  8. 使用Dynamic LINQ实现Ext Grid的远程排序

    要实现Ext Grid的远程排序其实很简单,只要修改查询语句的排序关键字就可以了,但是,如果你的项目是使用Linq进行开发的,会发现动态修改排序关键字并不是那么容易的事,解决办法就是使用LINQ Dy ...

  9. 完善ext.grid.panel中的查询功能(紧接上一篇)

    今天的代码主要是实现,Ext.grid.panel中的查询,其实我也是一名extjs新手,开始想的实现方式是另外再创建一个新的grid类来存放查询出的数据(就是有几个分类查询就创建几个grid类),这 ...

最新文章

  1. Spring Data JPA 五分钟快速入门和实践
  2. 《JUnit实战(第2版)》—第2章2.1节探索JUnit核心
  3. css样式命名规则(仅供参考)
  4. 实时视频传输中的BBR拥塞控制
  5. 硬件:台式机老式键盘知识科普
  6. java编程思想学习(3):Java中的private、protected、public和default的区别
  7. 华为交换机CPU SNMP OID [简单整理]
  8. 支付宝退款接口及反回参数
  9. Unity Physic.Simulate多场景模拟物理仿真效果、绘制运动轨迹
  10. python房屋租赁管理系统设计与实现报告_基于JavaWeb的房屋出租管理系统设计与实现毕业论文+开题报告+项目源码...
  11. Python如果or运算的两个参数都等同于False,返回后一个值
  12. Qt 中文和英文分别使用不同的字体
  13. Java MMdd 日期格式转换问题
  14. ThingsBoard教程(九):前端架构分析
  15. 音响的灵魂! 世界顶级扬声器品牌介绍
  16. 你适不适合做UE交互设计师
  17. 完整且详细的单链表代码
  18. 内推贴 || Marvell 2021校园招聘火热开启
  19. 商城、门户、微信服务平台、CMS、易企秀、红包、分销商城、游戏源代码
  20. 2021Java期末考选择判断题复习

热门文章

  1. 2017.3.25 矩阵快速幂 求斐波那契数列第n项
  2. android ffmpeg编译so,Android FFmpeg学习(一),将FFmpeg编译成so文件
  3. 【英语学习】【加州教材】【G2】【科学】Science目录及术语表
  4. JavaScript面试小知识
  5. android adb server didn't ack
  6. python在电脑哪可以找到_哪里可以找到比较靠谱的Python教程?
  7. docker toolbox在win7下的安装
  8. 弹飞大爷 BZOJ4764 LCT维护内向基环树森林
  9. Hacker-基础学习(1)
  10. 浅谈数据结构之主席树(线段树进阶版)