`

extjs学习笔记(六) grid中数据的保存,添加和删除

阅读更多

  在上一个系列当中,我们学习了如何对grid中的内容进行编辑,但是编辑的结果我们并没有保存,这在实际的应用中是没有什么意义的。在有些情况下,除了编辑之外,还要通过grid进行数据的增加和删除,这两个操作也涉及到对于数据的保存。在这个系列里边,我们将学习如何保存数据以及通过grid对数据进行增加和删除。

    我们在前边的学习过程中已经知道,grid其实只是显示数据,它通过配置参数store来获得数据,这个参数需要的是Store类或者其子类的一个对象,里边封装了我们需要的数据。我们现在应该已经比较熟悉Store类了,这次我们需要使用它的一个属性modified,里边保存了被修改过的记录的集合。我们通过把上个系列中的例子改变一下来看看如何保存数据:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->  1///<reference path="vswd-ext_2.0.2.js" />
  2/**//*
  3*作者:大笨
  4*日期:2009-10-20
  5*版本:1.0
  6*博客地址:http://yage.cnblogs.com
  7*QQ:14202190
  8*/

  9Ext.BLANK_IMAGE_URL = '../extjs/resources/images/default/s.gif';
 10
 11Ext.onReady(function() {
 12    Ext.QuickTips.init();
 13
 14    //格式化日期
 15    function formatDate(value) {
 16        return value ? value.dateFormat('Y年m月d日') : '';
 17    }

 18
 19    // 别名
 20    var fm = Ext.form;
 21
 22    //构造一个只能包含checkbox的列
 23    var checkColumn = new Ext.grid.CheckColumn({
 24        header: 'Indoor?',
 25        dataIndex: 'indoor',
 26        width: 55
 27    }
);
 28
 29    // 构造ColumnModel
 30    var cm = new Ext.grid.ColumnModel({
 31        columns: [{
 32            id: 'common',
 33            header: 'Common Name',
 34            dataIndex: 'common',
 35            width: 220,
 36            // 使用上边定义好的别名
 37            editor: new fm.TextField({
 38                allowBlank: false
 39            }
)
 40        }
{
 41            header: 'Light',
 42            dataIndex: 'light',
 43            width: 130,
 44            editor: new fm.ComboBox({
 45                typeAhead: true,
 46                triggerAction: 'all',
 47                transform: 'light',
 48                lazyRender: true,
 49                listClass: 'x-combo-list-small'
 50            }
)
 51        }
{
 52            header: 'Price',
 53            dataIndex: 'price',
 54            width: 70,
 55            align: 'right',
 56            renderer: 'usMoney',
 57            editor: new fm.NumberField({
 58                allowBlank: false,
 59                allowNegative: false,
 60                maxValue: 100000
 61            }
)
 62        }
{
 63            header: 'Available',
 64            dataIndex: 'availDate',
 65            width: 95,
 66            renderer: formatDate,
 67            editor: new fm.DateField({
 68                format: 'Y年m月d日',
 69                minValue: '01/01/06',
 70                disabledDays: [06],
 71                disabledDaysText: 'Plants are not available on the weekends'
 72            }
)
 73        }
,
 74        checkColumn
 75    ],
 76        defaults: {
 77            sortable: true
 78        }

 79    }
);
 80
 81
 82    // 构造一个Store对象
 83    var store = new Ext.data.Store({
 84
 85        url: 'plants.xml',
 86
 87        reader: new Ext.data.XmlReader(
 88            {
 89                record: 'plant'
 90            }
,
 91
 92            [
 93                { name: 'common', type: 'string' },
 94                { name: 'botanical', type: 'string' },
 95                { name: 'light' },
 96                { name: 'price', type: 'float' },
 97                { name: 'availDate', mapping: 'availability', type: 'date', dateFormat: 'm/d/Y' },
 98                { name: 'indoor', type: 'bool' }
 99            ]
100        ),
101
102        sortInfo: { field: 'common', direction: 'ASC' }
103    }
);
104
105    // 构造可编辑的grid
106    var grid = new Ext.grid.EditorGridPanel({
107        store: store,
108        cm: cm,
109        renderTo: 'grid',
110        width: 600,
111        height: 300,
112        autoExpandColumn: 'common',
113        title: 'Edit Plants?',
114        frame: true,
115        plugins: checkColumn,
116        clicksToEdit: 1,
117        listeners: {
118            "afterEdit"{
119                fn: afterEdit,
120                scope: this
121            }

122        }
,
123        tbar: [{
124            text: "保存",
125            handler: function() {
126                var modified = store.modified;
127                updateData(modified);
128            }

129        }
]
130    }
);
131
132    // 触发数据的加载
133    store.load();
134
135    //发送数据到服务器端进行更新
136    function updateData(modified) {
137        var json = [];
138        Ext.each(modified, function(item) {
139            json.push(item.data);
140        }
);
141        if (json.length > 0{
142            Ext.Ajax.request({
143                url: "EditGrid.aspx",
144                params: { data: Ext.util.JSON.encode(json) },
145                method: "POST",
146                success: function(response) {
147                    Ext.Msg.alert("信息""数据更新成功!"function() { store.reload(); });
148                }
,
分享到:
评论

相关推荐

    Extjs4.0学习笔记

    ExtJS4学习笔记(六)---多表头Grid ExtJS4学习笔记(七)---带搜索的Grid(SearchGrid) ExtJS4学习笔记(八)---Grid多选/全选 ExtJS4学习笔记(九)---ExtJS4 EditGrid(可编辑的Grid) ExtJS4学习笔记(十)---ExtJS4...

    extjs 学习笔记(三) 最基本的grid

    在本篇学习笔记中,我们将深入探讨EXTJS中最基本的Grid的构建和配置。 首先,EXTJS的Grid由多个组件构成,其中最重要的是`ColumnModel`,它负责定义Grid中的列属性。在示例代码中,我们创建了一个`ColumnModel`对象...

    ExtJS笔记---Grid实现后台分页

    这篇“ExtJS笔记——Grid实现后台分页”探讨了如何在ExtJS的Grid组件中实现高效的后台分页功能。 后台分页是一种常见的数据处理策略,特别是在大数据量的情况下,它将数据分批加载,避免一次性加载所有记录导致的...

    Extjs复习笔记(二十)-- tree和grid结合

    在"Extjs复习笔记(二十)-- tree和grid结合"这篇博文中,博主探讨了如何在EXTJS中实现树形视图(Tree)与网格视图(Grid)的融合。 Tree组件在EXTJS中通常用于显示具有层级关系的数据,例如文件系统、组织架构等。...

    ExtJS4中文教程2 开发笔记 chm

    ExtJS4学习笔记(六)---多表头Grid ExtJS4学习笔记(十)---ExtJS4图片验证码的实现 ExtJS4学习笔记(十一)---TabPanel ExtJS4学习笔记(十三)---上传文件(upload) ExtJS4学习笔记(十二)---选项卡(tabs) ExtJS4学习笔记...

    extjs4.x学习笔记

    【ExtJs 4.x 学习笔记】 在Web应用程序开发领域,ExtJs是一个强大的JavaScript库,主要用于构建富客户端界面。随着技术的不断发展,ExtJs也不断进化,从3.x版本到4.x,再到5.x,引入了许多新特性,提升了开发效率和...

    extjs4 学习笔记源码

    exjts4 学习笔记源码,源码包含windws,hbox,vbox和Grid的应用,其中grid介绍比较多。下载解压后,部署后就可以使用,所有代码均在demo文件夹下。更多extjs4教程,请关注http://www.mhzg.net

    老师整理的extjs学习笔记

    ### ExtJS 学习笔记概览 #### 一、ExtJS 入门 **1.1 ExtJS 构成及如何引用** ExtJS 是一款基于 JavaScript 的开源框架,专为 Web 应用程序的前端界面设计。其核心优势在于提供了一套丰富的 UI 组件和强大的数据...

    extJs4.2学习笔记

    ### extJs4.2 学习笔记 #### 1. Panel 组件 Panel 是 ExtJS 中最基础且功能强大的容器之一。它具有多种属性和方法,可以用来创建各种类型的界面元素,例如弹出框、对话框等。在给定代码示例中,Panel 的创建如下:...

    extjs4.0学习笔记

    11. **数据源(Ext.grid.Panel)**:`store`是EXTJS中数据的容器,`columnLines`控制是否显示列分割线,`columns`定义了列的结构。`viewConfig`允许自定义网格视图的属性,如`stripeRows`用于开启斑马线效果,`...

    JavaScript.-Extjs基础学习笔记

    根据给定的文件信息,我们可以深入探讨两个关键的Extjs组件——Tab Panel(标签页控件)和Grid(表格控件)。这两个控件是Extjs框架中非常实用且功能丰富的部分,广泛应用于Web应用程序的界面设计与交互逻辑构建。 ...

    extjs 学习笔记 四 带分页的grid

    因此,现在几乎所有的grid控件都会支持分页功能。extjs也不例外,它对分页也提供了强大而方便的支持,使得我们在分页处理上可以得心应手。 在extjs中,类Ext.PagingToolbar封装了关于分页的操作,该类从Toolbar继承...

    ExtJS使用笔记

    ExtJS是一个开源的JavaScript库,主要用于...通过本笔记的学习,可以掌握ExtJS在前端开发中的应用,理解各个组件和管理器的使用方法,以及一些针对特定浏览器的布局技巧,为创建美观、高效的用户界面打下坚实的基础。

    extjs批量上传的所有相关代码和jar,支持包和笔记

    EXTJS是一种基于JavaScript的富客户端应用框架,广泛用于构建企业级..."批量上传"这个压缩包可能包含了实现这一功能所需的全部代码、样式、支持文件及开发者的经验总结,对于学习和理解EXTJS批量上传机制非常有帮助。

    Extjs4.0学习与开发笔记

    Extjs4.0学习与开发笔记 描述了菜单的实现、带搜索的Grid,带checkbox的可编辑的Grid等知识点,并附实现代码

    extjs 3.3正式版

    学习EXTJS 3.3,你需要掌握JavaScript基础知识,理解其组件模型、事件处理机制和数据绑定原理。同时,熟悉HTML和CSS有助于更好地定制EXTJS组件的外观。通过实践,你可以逐步熟悉EXTJS的API,熟练运用它来构建高质量...

    Extjs4 MVC开发笔记源码

    ExtJS 4是一款基于JavaScript的富客户端框架,用于构建交互式Web应用。MVC(Model-View-Controller)...本源码提供了实际的开发示例,通过学习和研究,可以帮助开发者深入理解ExtJS 4 MVC模式,并应用于自己的项目中。

    ExtJs中引用的三个js

    博客中的“extjs笔记(1)”可能是作者分享的学习心得,对于理解这三个js如何协同工作会有很大帮助。 在实际开发中,理解和熟练运用这些核心文件,将有助于构建高效、可维护的ExtJS应用。同时,持续学习和实践是...

Global site tag (gtag.js) - Google Analytics