ExtJs4开发动态编辑的表格

开发动态编辑的表格(1)

Ext JS在Ext.grid.plugin包下提供了允许编辑表格的插件功能,该包下提供了如下3个与表格编辑有关的类。

Ext.grid.plugin.Editing:为表格增加编辑功能的基类。

Ext.grid.plugin.RowEditing:为表格行增加编辑功能的插件类。

Ext.grid.plugin.CellEditing:为单元格增加编辑功能的插件类。

当使用Ext.grid.plugin.RowEditing、Ext.grid.plugin.CellEditing为表格增加编辑时,可以指定如下4种常见的事件处理函数。

beforeedit:在编辑之前触发的事件处理函数。

canceledit:取消编辑时触发的事件处理函数。

edit:编辑完成时触发的事件处理函数。

validateedit:指定编辑完成之后,值被保存到Store之前触发该事件处理函数。如果该事件处理函数返回false,将可以取消编辑。

为该表格增加动态编辑功能,需要完成如下两步:

使用Ext.grid.Panel定义表格时,可通过plugins选项为表格单击单元格编辑插件或行编辑插件。

使用Ext.grid.Panel定义表格,并且使用fields选项定义表格列时,为需要编辑的单元格通过editor选项指定单元格编辑器。

如下示例开发了一个允许异步、动态编辑表格数据的页面。

程序清单:codes\06\6.8\Ext.grid\Ext.grid.Panel_edit.html

<body> 
<script type="text/javascript"> 
Ext.onReady(function(){  
    Ext.define('Book', {  
        extend: 'Ext.data.Model',  
        fields: [  
            {name: 'id' , type: 'int'},  
            {name: 'name', type: 'string'},  
            {name: 'author', type: 'string'},  
            {name: 'price', type: 'float'},  
        ]  
    });  
    // 创建一个Ext.data.Store对象  
    var bookStore = Ext.create('Ext.data.Store',   
    {  
        // 指定使用Book Model管理记录  
        model: 'Book',  
        // 使用proxy指定加载远程数据  
        proxy:   
        {  
            type: 'ajax',  
            url: 'getAllBooks',// 向该URL发送Ajax请求  
            reader: { // 使用Ext.data.reader.Json读取服务器数据  
                type: 'json',  
                root: 'data' // 直接读取服务器响应的data数据  
            },  
        },  
        autoLoad:true// 自动加载服务器数据  
    });  
    var grid = Ext.create('Ext.grid.Panel', {  
        title: '查看服务器端图书',  
        width: 550, // 指定表单宽度  
        renderTo: Ext.getBody(),  
        // 定义该表格包含的所有数据列  
        columns: [  
            { text: '图书ID', dataIndex: 'id' , flex: 1 }, // 第1个数据列  
             // 第2个数据列  
            { text: '书名', dataIndex: 'name' , flex: 1,  
                editor: {xtype: 'textfield', allowPattern: false}},  
             // 第3个数据列  
            { text: '作者', dataIndex: 'author', flex: 1,  
                editor: {xtype: 'textfield', allowPattern: false}},  
            // 第4个数据列  
            { text: '价格', dataIndex: 'price' , flex: 1,  
                editor: {xtype: 'numberfield', allowPattern: false}},  
        ],  
        selType: 'rowmodel', // 指定选择模式:行选择模式  
        plugins:   
        [  
            // 增加表格行编辑插件  
            {  
                ptype: 'rowediting',  
                clicksToEdit: 1  
            }  
        ],  
        store: bookStore  
    });  
    // 当表格编辑完成后,触发该事件处理函数  
    grid.on('edit', function(editor, e)  
    {  
        Ext.Ajax.request({  
            url: 'updateBook', // 向此处发送Ajax请求  
            method: 'POST',  
            params: { // 指定请求参数  
                id: e.newValues.id,  
                name: e.newValues.name,  
                author: e.newValues.author,  
                price: e.newValues.price,  
            }, // 指定服务器响应完成的回调函数  
            success: function(response){  
                alert(Ext.JSON.decode(response.responseText).tip);  
                e.record.commit();  
            }  
        });  
    });  
});  
</script> 
</body> 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。ExtJs最开始基于YUI技术,由开发人员 JackSlocum开发,通过参考JavaSwing等机制来组织可视化组件,无论从UI界面上CSS样式的应用,到数据解析上的异常处理,都可算是 一款不可多得的JavaScript客户端技术的精品。 Ext的UI组件模型和开发理念脱胎、成型于Yahoo组件库YUI和Java平台上Swing两者,并为开发者屏蔽了大量跨浏览器方面的处理。相对来说,EXT要比开发者直接针对DOM、W3C对象模型开发UI组件轻松。 ExtJS(ajax框架) 4.2.1 功能介绍 功能丰富,无人能出其右。 无论是界面之美,还是功能之强,ext表格控件都高居榜首。 单选行,多选行,高亮显示选中的行,拖拽改变列宽度,按列排序,这些基本功能ExtJS轻量级实现。 自动生成行号,支持checkbox全选,动态选择显示哪些列,支持本地以及远程分页,可以对单元格按照自己的想法进行渲染,这些也算可以想到的功能。 再加上可编辑grid,添加新行,删除一或多行,提示多行数据,拖拽改变grid大小,grid之间拖拽一或多行,甚至可以在tree和grid之间进行拖拽,这些功能实在太神奇了。更令人惊叹的是,这些功能竟然都在ext表格控件里实现了。 其实从ext3开始就支持各种方式的统计,且有控件支持excel导出。 功能特点 高性能, customizable UI widgets Well designed, documented and extensible Component model Commercial and Open Source licenses available 更新说明 核心改进:检视框架的架构和重塑其基础。这些变化不单提供了产品性能,还提高了其健壮性。 测试框架:在所有支持的浏览器上对框架进行了持续全面的测试。 类系统:作为Extjs 4架构更新的一部分,引用了一个功能更完整的类系统。 沙盒:在ExtJS历史上,ExjJS 4首次提供了完整的沙盒模式。从ExtJS 4开始,框架不再扩展数组或函数等原生对象,因此,与其它的框架同时加载到页面时,再也不会产生冲突。 应用架构:在ExtJS 4,引入了一个标准化的几乎适合任何ExtJS应用程序的MVC风格的应用架构。使用MVC,开发团队只需要学习一种架构就能理解任何ExtJS 4的应用。 SDK工具:正在测试beta版的Sencha SDK工具,在第一版本中包括了优化工具、生成器和slicer工具。这些工具可让你优化Javascript程序,以确保主题能在IE6正常工作。 全新的图表库:ExtJS4中, 全新的、插件自由的图表库是最激动人心的新功能之一,创建了饼图、线图、面积图、雷达图等等,所有这些都是动画的、易于配置的和可扩展的。
ExtJS2 中,要实现可编辑表格并在编辑时弹出窗口,你可以使用 GridPanel 的编辑插件(EditingGridPanel)和窗口组件(Window)的结合。 首先,你需要创建一个可编辑的 GridPanel,并为其指定一个编辑插件。然后,你可以在编辑事件中弹出一个窗口,让用户进行编辑操作。在窗口中进行的编辑完成后,将更新的数据保存到 GridPanel 中。 以下是一个示例代码,演示如何在 ExtJS2 中实现可编辑表格并弹出窗口进行编辑: ```javascript Ext.onReady(function() { // 创建数据模型 var store = new Ext.data.Store({ fields: ['name', 'email', 'phone'], data: [ { name: 'John Doe', email: '[email protected]', phone: '123-456-7890' }, { name: 'Jane Smith', email: '[email protected]', phone: '987-654-3210' }, // ... ] }); // 创建列模型 var columnModel = new Ext.grid.ColumnModel({ columns: [ { header: 'Name', dataIndex: 'name', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: 'Email', dataIndex: 'email', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: 'Phone', dataIndex: 'phone', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) } ] }); // 创建 GridPanel var grid = new Ext.grid.EditorGridPanel({ store: store, cm: columnModel, renderTo: Ext.getBody(), clicksToEdit: 1, // 设置为 1,表示单击单元格即可进入编辑状态 plugins: [new Ext.ux.grid.RowEditor()], // 使用 RowEditor 插件 listeners: { afteredit: function(editor, changes, record, rowIndex) { // 单元格编辑完成后触发 var win = new Ext.Window({ title: 'Edit', layout: 'form', items: [ new Ext.form.TextField({ fieldLabel: 'Name', value: record.get('name') }), new Ext.form.TextField({ fieldLabel: 'Email', value: record.get('email') }), new Ext.form.TextField({ fieldLabel: 'Phone', value: record.get('phone') }) ], buttons: [{ text: 'Save', handler: function() { // 保存编辑后的数据 record.set('name', win.getComponent(0).getValue()); record.set('email', win.getComponent(1).getValue()); record.set('phone', win.getComponent(2).getValue()); win.close(); } }] }); win.show(); } } }); }); ``` 在上面的示例中,我们使用了 RowEditor 插件来实现行级别的编辑功能。在 afteredit 事件中,我们弹出了一个窗口,允许用户在窗口中进行编辑操作。在窗口中的 Save 按钮的事件处理程序中,我们将编辑后的数据保存到 GridPanel 中。 请注意,示例中使用了 Ext.form.TextField 来创建文本输入框,你可以根据实际需求使用其他表单组件。 希望这对你有帮助!如有更多问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值