鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-24/182.html

--------------------------------------------------------------------------------------------

前一章说了EditorGrid可编辑表格,但是有点不方便,如果数据多的话,一次性保存未免有点不太方便。下面我们来说一个扩展插件rowEditing网上许多说了不全,比如将修改的内容提交到后台的方法。

首先,创建扩展插件方法

var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
saveBtnText: '保存',
cancelBtnText: "取消",
autoCancel: false,
clicksToMoveEditor: 1, //双击进行修改 1-单击 2-双击 0-可取消双击/单击事件
autoCancel: false,
listeners:{
edit:function(e){
/*var myMask = new Ext.LoadMask(Ext.getBody(), {
msg: '正在修改,请稍后...',
removeMask: true //完成后移除
});
myMask.show();*/
console.info(e.context.record);
//e.context.record为更改的这行的数据,某个值可以用get方法,比如下面
var id = e.context.record.get('id'); //比如修改了id,在这里就可以获取id
//e.context.record.fields.items为修改的这行字段名,这是一个数组集合,e.context.record.fields.items[0].name为第一列的名称,以此类推
// 更新提示界面(供调试使用)
Ext.Msg.alert('您成功修改信息', "修改的内容是:" + e.context.record + "n 修改的字段是:"+ e.context.record.fields.items[0].name +"n 修改的id为"+id);//取得更新内容
}
//当然这里你也可以自定义一个ajax来提交到后台,大家自由发挥,这里不多写。
}
});

这里注意下,提交到后台的参数里e.context.record和e.context.record.fields方法比较重要,

e.context.record为更改的这行的数据,获某个值可以用get方法。

e.context.record.fields.items为修改的这行字段名,这是一个数组集合,e.context.record.fields.items[0].name为第一列的名称,以此类推。

grid中调用插件:

var grid = new Ext.grid.GridPanel({
title:'表格的扩展插件--行编辑',
width: 500,
height: 400,
renderTo: 'grid',
store: store,
columns: columns,
plugins: [rowEditing]
});

完整代码:

/**
* Grid
* 此js演示了ExtJS之基于表格的扩展插件
*/
//表格数据最起码有列、数据、转换原始数据这3项
Ext.onReady(function(){
var columns = [
{header:'编号',dataIndex:'id',width:50,editor: {//在每行需要更改的地方加上想编辑的类型,默认textfield
allowBlank: false
}
},
{header:'名称',dataIndex:'name',width:280,editor:{
allowBlank: false,
vtype: 'email'
}
},
{header:'描述',dataIndex:'descn',width:150}
]; var data = [
['1','shuyangyang@aliyun.com','descn1'],
['2','shuyangyang@163.com','descn2'],
['3','shuyangyang@yahoo.com.cn','descn3'],
['4','shuyangyang@tom.com','descn4'],
['5','shuyangyang@sina.com','descn5']
]; var store = new Ext.data.ArrayStore({
data: data,
fields: [
{name: 'id'},
{name: 'name'},
{name: 'descn'}
]
});
store.load(); var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
saveBtnText: '保存',
cancelBtnText: "取消",
autoCancel: false,
clicksToMoveEditor: 1, //双击进行修改 1-单击 2-双击 0-可取消双击/单击事件
autoCancel: false,
listeners:{
edit:function(e){
/* var myMask = new Ext.LoadMask(Ext.getBody(), {
msg: '正在修改,请稍后...',
removeMask: true //完成后移除
});
myMask.show(); */
console.info(e.context.record);
//e.context.record为更改的这行的数据,获某个值可以用get方法,比如下面
var id = e.context.record.get('id'); //比如修改了id,在这里就可以获取id
//e.context.record.fields.items为修改的这行字段名,这是一个数组集合,e.context.record.fields.items[0].name为第一列的名称,以此类推
// 更新提示界面(供调试使用)
Ext.Msg.alert('您成功修改信息', "修改的内容是:" + e.context.record + "\n 修改的字段是:"+ e.context.record.fields.items[1].name +"\n 修改的id为"+id);//取得更新内容
}
//当然这里你也可以自定义一个ajax来提交到后台,大家自由发挥,这里不多写。
}
}); var grid = new Ext.grid.GridPanel({
title:'表格的扩展插件--行编辑',
width: 500,
height: 400,
renderTo: 'grid',
store: store,
columns: columns,
plugins: [rowEditing]
}); });

后记:RowEditing的缺点:当前编辑的对象限于一行中的一个单元格(列),编辑后要么选择保存,要么选择取消,怎样在一行中的所有列全部编辑完后提交呢?

查询API,是这样介绍RowEditing的:

“这个Ext.grid.plugin.RowEditing插件将会注入在grid的进行级别的编辑的时候。 在开始编辑的时候, 一个小的浮动对话框会显示相应的行。每个编辑栏将显示一个字段进行编辑。 还有按钮用来保存和取消所有的编辑。”

看来RowEditing针对的对象只是一个字段?

ExtJS4.2学习(13)基于表格的扩展插件---rowEditing的更多相关文章

  1. ExtJS4.2学习(14)基于表格的扩展插件(2)(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-26/184.html --------------- ...

  2. ExtJS4.2学习(12)基于表格的右键菜单(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-24/181.html --------------- ...

  3. ExtJS4.2学习(九)属性表格控件PropertyGrid(转)

    鸣谢网址:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-15/178.html ------------- ...

  4. ExtJS4.2学习(15)树形表格(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-27/185.html --------------- ...

  5. ExtJS4.2学习(10)分组表格控件--GroupingGrid(转)

    鸣谢网址:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-17/179.html ------------- ...

  6. ExtJS4.2学习(四)Grid表格中文排序问题(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-07/173.html --------------- ...

  7. ExtJS4.2学习(三)Grid表格(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-07/172.html --------------- ...

  8. ExtJS4.2学习(11)可拖放的表格(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-18/180.html --------------- ...

  9. 提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件

    Chrome插件,官方名称extensions(扩展程序):为了方便理解,以下都称为插件. 我们开发的插件需要在浏览器里面运行,打开浏览器,通过右上角的三个点(自定义及控制)-更多工具-拓展程序-打开 ...

随机推荐

  1. Nginx - Windows 环境安装 Nginx

    1. 访问 http://nginx.org/en/download.html,下载 Windows 版本的安装包 2. 解压安装包,双击 nginx.exe,启动 nginx 3. 访问 http: ...

  2. Android学习之——图形图像处理(Bitmap、BitmapFactory)(一)

    转载自http://blog.csdn.net/csxwc/article/details/10345235 Bitmap是Android系统中的图像处理的最重要的类之一.用它可以获取图像文件信息,对 ...

  3. (二)Qt界面设计之菜单栏

    1.添加菜单项 直接输入菜单项名称,然后回车即可. 2.为菜单项设置图标 在动作编辑器上,右键选择编辑,然后添加图标 如果想在图标栏添加该菜单的快捷图标,直接将该动作项拖放只图标栏即可. 3.事件响应 ...

  4. Session id实现通过Cookie来传输方法及代码参考

    1. Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.因此从上述的定义中我们可以看到,Session实际上是一个特定的 ...

  5. 解决oracle归档日志写满了(ORA-00257)的问题

    解决ORA-00257: archiver error. Connect internal only, until freed 此问题属于归档日志满了. 解决办法: SQL> select * ...

  6. IOS 异步GET方法请求

    1.添加协议NSURLConnectionDelegate 2.引入头文件“NSString+URLEncoding”,用来处理URL进行编码. 3.引入头文件“NSNumber+Message”,用 ...

  7. C#学习笔记之线程 - 同步上下文

    同步上下文(Synchronization Contexts) 手动使用锁的一个替代方案是去声明锁.通过派生ContextBoundObject和应用Synchronization属性,你告诉CLR自 ...

  8. OC4_实例变量的作用域

    // // Dog.h // OC4_实例变量的作用域 // // Created by zhangxueming on 15/6/16. // Copyright (c) 2015年 zhangxu ...

  9. 当html中存在url中如: onclick="toView('参数1')", 参数1是特别字符,如&asop;"' "等时,浏览器解析时会报错。解决方法如文中描述

    解决方案: 自定义标签将字符串转换成unicode编码后输出显示到页面即可 解析原理:解析顺序html  ---url ----javascript---url,由于unicode编码在htm解析阶段 ...

  10. (转)卸载和安装LINUX上的JDK

    卸载默认的: 用root用户登陆到系统,打开一个终端输入 # rpm -qa|grep gcj 显示内容其中包含下面两行信息 # java-1.4.2-gcj-compat-1.4.2.0-27jpp ...