ExtJS4.2学习(13)基于表格的扩展插件---rowEditing

鸣谢: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‘,‘[email protected]‘,‘descn1‘],
        [‘2‘,‘[email protected]‘,‘descn2‘],
        [‘3‘,‘[email protected]‘,‘descn3‘],
        [‘4‘,‘[email protected]‘,‘descn4‘],
        [‘5‘,‘[email protected]‘,‘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针对的对象只是一个字段?

时间: 2024-11-21 03:04:30

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

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

鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-24/181.html ----------------------------------------------------------------------------------------------- 在实际的软件开发中,我们的grid表格为了方便用户通常会有一个右键菜单来实现对表格的增.删.改等操作,下面看一下演示的效果: 以下是完整可

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

鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-27/185.html ------------------------------------------------------------------------------------------- 以下是完整代码: /** * Grid * 此js演示了ExtJS之树形表格 * 注意:在加载附件时要注意路径.如加载TreeStore——'tr

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

鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-07/173.html ----------------------------------------------------------------------------------------- 如果不进行任何排序的设置,Extjs有默认的排序. 下面的代码没有对Grid进行排序的设置: /** * Grid * 此js对Grid的某列进行了排

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

鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-07/172.html ---------------------------------------------------------------------------------------------- Ext中的表格功能非常强大,包括排序.缓存.拖动.隐藏某一列.自动显示行号.列汇总.单元格编辑等实用功能.表格由类Ext.grid.Grid

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

鸣谢网址:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-17/179.html --------------------------------------------------------------------------------------------- 分组表格控件在我们的开发中经常被用到,GroupingGrid分组表格就是在普通表格的基础上,根据某一列的数据显示表格中的数据分组的表格控

ExtJS4.2学习(20)动态数据表格之前几章总结篇1

本节采用技术:SpringMVC+Jetty+ExtJs4.2+Maven+MySQL5.1以上+SLF4J(前几节学习的大家不知道记住了没,现在来总结复习下,顺便加点新技术) 学习本节前的准备:Eclipse高版本,Jetty插件,Maven插件,JDK1.7 休息了好久没开动教程了,确实最近太累了,大家见谅!先来看下效果,本章节是连续篇,今天是续篇的第一讲,前面都是静态讲解,大家是不是觉得不过瘾啊?咱学Java的嘛,当然得和Java的技术结合讲解咯,前面也说到以后会用动态数据讲解的.一.准备

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

鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-18/180.html -------------------------------------------------------------------------------------------- 先来看下第一个例子,通过拖放改变表格大小: 以下是完整代码: /** * Grid * 此js演示了ExtJS之可拖放的表格:在一个表格间互相拖

ExtJS4.2学习(17)表单基本输入控件Ext.form.Field

Ext.form.Field是所有表单输入控件的基类,其他的输入控件都是基于Ext.form.Field扩展得来的. Ext.form.Field中定义了输入控件通用的属性和功能函数,这些通用的属性和功能函数大致分为3大类:页面显示样式.控件参数配置和数据有效性检验.我们先来看看表单输入控件可以使用的校验显示方式.默认情况下,这些输入控件会监听blur事件,如果数据校验失败,就会根据msgTarget中的设置显示错误信息.通常,msgTarget会被设置为qtip,即使用QuickTip显示错误

JavaScript学习13 JavaScript中的继承

JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript"> //继承第一种方式:对象冒充 function Parent(username) //父类对象 { this.username = username; //下面的代码最关键的部分就是将子对象的this传递给了父对象 this.sayHello = function() { alert(this.username); } } f