`
java2000.net
  • 浏览: 651148 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Ext2.2-用XML做数据源,可编辑Grid的例子

阅读更多
原文地址:http://www.java2000.net/p8972

先看看运行效果







html源代码

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" c>
  4. <title>Editor Grid Example</title>
  5. <link rel="stylesheet" type="text/css" href="../resources/css/ext-all.css" />
  6.          <script type="text/javascript" src="../adapter/ext/ext-base.js"></script>
  7.     <script type="text/javascript" src="../ext-all.js"></script>
  8.     <script type="text/javascript">
  9.         Ext.onReady(function(){
  10.             Ext.QuickTips.init();
  11.                 // 日期格式化
  12.             function formatDate(value){
  13.                 return value ? value.dateFormat('Y年m月d日') : '';
  14.             };
  15.             // shorthand alias
  16.             var fm = Ext.form;
  17.             // 自定义的字段
  18.             var checkColumn = new Ext.grid.CheckColumn({
  19.                header: "婚否?",
  20.                dataIndex: 'married',
  21.                width: 55
  22.             });
  23.             // 列数据的模型
  24.             // dataIndex 对应着数据里面的字段
  25.             var cm = new Ext.grid.ColumnModel([{
  26.                    id:'name', // 数据模型的唯一编号
  27.                    header: "姓名", // 标题
  28.                    dataIndex: 'name', // 对应于数据源里面的字段
  29.                    width: 220, // 宽度
  30.                    editor: new fm.TextField({ // 编辑的类型
  31.                        allowBlank: false // 不允许为空,如果为空,则会显示红色波浪线警告且恢复原始数值
  32.                    })
  33.                 },{
  34.                    header: "学位", // 学位的标题
  35.                    dataIndex: 'degree', // 对应于学位
  36.                    width: 130,
  37.                    editor: new Ext.form.ComboBox({ // 使用自定义的下拉框
  38.                        typeAhead: true,
  39.                        triggerAction: 'all',
  40.                        transform:'degree', // 对应的下拉列表ID
  41.                        lazyRender:true,
  42.                        listClass: 'x-combo-list-small'
  43.                     })
  44.                 },{
  45.                    header: "薪资(元)",
  46.                    dataIndex: 'salary',
  47.                    width: 70,
  48.                    align: 'right', // 右对齐
  49.                    editor: new fm.NumberField({ // 数字编辑框
  50.                               decimalPrecision: 0, // 默认的小数点位数
  51.                        allowBlank: false,
  52.                        allowNegative: false, // 不允许为负数
  53.                        maxValue: 100000 // 最大值为10万
  54.                    })
  55.                 },{
  56.                    header: "出生日期",
  57.                    dataIndex: 'birthday',
  58.                    width: 95,
  59.                    renderer: formatDate,
  60.                    editor: new fm.DateField({ // 日期的编辑框
  61.                         format: 'Y-m-d', // 格式
  62.                         minValue: '1908-08-08'
  63.                     })
  64.                 },
  65.                 checkColumn // 自定义的婚否列
  66.             ]);
  67.             // 默认列是可以排序的
  68.             cm.defaultSortable = true;
  69.             // 创建数据源的记录,代表一个员工
  70.             var Employee = Ext.data.Record.create([
  71.                    // name对应着数据里面对应的标签,birthday例外,对应着birth
  72.                    {name: 'name', type: 'string'},
  73.                    {name: 'address', type: 'string'},
  74.                    {name: 'degree'},
  75.                    {name: 'salary', type: 'int'},
  76.                     // 日期自动转换
  77.                    {name: 'birthday', mapping: 'birth', type: 'date', dateFormat: 'm/d/Y'},
  78.                    {name: 'married', type: 'bool'}
  79.               ]);
  80.             // 创建数据集,读取员工数据
  81.             var store = new Ext.data.Store({
  82.                 // 使用HTTP协议获得
  83.                 url: 'employees.xml',
  84.                 // the return will be XML, so lets set up a reader
  85.                 // 返回的是一个XML数据,我们解析为我们定义的记录格式 Employee
  86.                 reader: new Ext.data.XmlReader({
  87.                        // 记录里面有个 "employee" 的标签
  88.                        record: 'employee'
  89.                    }, Employee),
  90.                 sortInfo:{field:'name', direction:'ASC'}  // 默认按照姓名正向排序
  91.             });
  92.             // 创建可编辑的 Grid
  93.             var grid = new Ext.grid.EditorGridPanel({
  94.                 store: store, // 指定数据源
  95.                 cm: cm,
  96.                 renderTo: 'editor-grid', // 目标的id位置
  97.                 width:600,
  98.                 height:300,
  99.                 autoExpandColumn:'name',  // 默认自动扩展宽度的字段
  100.                 title:'人员信息编辑',  // 标题
  101.                 frame:true,
  102.                 plugins:checkColumn,
  103.                 clicksToEdit: 0, // 默认为双击编辑,如果为1则单击就编辑
  104.                 tbar: [{ // 顶部的工具栏 tools bar
  105.                     text: '增加新员工',
  106.                     handler : function(){
  107.                         var p = new Employee({
  108.                             name: '输入员工姓名',
  109.                             degree: '学士',
  110.                             salary: 0,
  111.                             birthday: (new Date()).clearTime(),
  112.                             married: false
  113.                         });
  114.                         grid.stopEditing();
  115.                         store.insert(0, p);
  116.                         grid.startEditing(0, 0);
  117.                     }
  118.                 }]
  119.             });
  120.             // 装载数据
  121.             store.load();
  122.         });
  123.         Ext.grid.CheckColumn = function(config){
  124.             Ext.apply(this, config);
  125.             if(!this.id){
  126.                 this.id = Ext.id();
  127.             }
  128.             thisthis.renderer = this.renderer.createDelegate(this);
  129.         };
  130.         Ext.grid.CheckColumn.prototype ={
  131.             init : function(grid){
  132.                 this.grid = grid;
  133.                 this.grid.on('render', function(){
  134.                     var view = this.grid.getView();
  135.                     view.mainBody.on('mousedown', this.onMouseDown, this);
  136.                 }, this);
  137.             },
  138.             onMouseDown : function(e, t){
  139.                 if(t.className && t.className.indexOf('x-grid3-cc-'+this.id) != -1){
  140.                     e.stopEvent();
  141.                     var index = this.grid.getView().findRowIndex(t);
  142.                     var record = this.grid.store.getAt(index);
  143.                     record.set(this.dataIndex, !record.data[this.dataIndex]);
  144.                 }
  145.             },
  146.             renderer : function(v, p, record){
  147.                 p.css += ' x-grid3-check-col-td';
  148.                 return '<div class="x-grid3-check-col'+(v?'-on':'')+' x-grid3-cc-'+this.id+'"> </div>';
  149.             }
  150. };
  151.     </script>
  152. </head>
  153. <body>
  154. <h1>可编辑的 Grid</h1>
  155. <!-- 自定义的数据下拉框 -->
  156. <select name="degree" id="degree" style="display: none;">
  157.         <option value="博士">博士</option>
  158.         <option value="硕士">硕士</option>
  159.         <option value="双学士">双学士</option>
  160.         <option value="学士">学士</option>
  161.         <option value="其它">其它</option>
  162. </select>
  163. <div id="editor-grid"></div>
  164. </body>
  165. </html>


用到的 employees.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <catalog>
  3.   <employee>
  4.     <name>张三</name>
  5.     <address>天津市第一大街</address>
  6.     <zone>4</zone>
  7.     <degree>学士</degree>
  8.     <salary>2440</salary>
  9.     <birth>03/15/2006</birth>
  10.     <married>true</married>
  11.   </employee>
  12.   <employee>
  13.     <name>李四</name>
  14.     <address>北京市朝阳区</address>
  15.     <zone>3</zone>
  16.     <degree>学士</degree>
  17.     <salary>9370</salary>
  18.     <birth>03/06/2006</birth>
  19.     <married>true</married>
  20.   </employee>
  21.   <employee>
  22.     <name>王五</name>
  23.     <address>上海浦东</address>
  24.     <zone>4</zone>
  25.     <degree>博士</degree>
  26.     <salary>6810</salary>
  27.     <birth>05/17/2006</birth>
  28.     <married>false</married>
  29.   </employee>
  30.   <employee>
  31.     <name>赵六</name>
  32.     <address>广州</address>
  33.     <zone>4</zone>
  34.     <degree>学士</degree>
  35.     <salary>9900</salary>
  36.     <birth>03/06/2006</birth>
  37.     <married>true</married>
  38.   </employee>
  39.   <employee>
  40.     <name>孙武</name>
  41.     <address>四川成都</address>
  42.     <zone>3</zone>
  43.     <degree>学士</degree>
  44.     <salary>6440</salary>
  45.     <birth>01/20/2006</birth>
  46.     <married>true</married>
  47.   </employee>
  48. </catalog>


结论:
Extjs 确实不错。














<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
分享到:
评论
2 楼 microjava 2008-10-26  
thisthis.renderer = this.renderer.createDelegate(this);

这里应该是:
this.renderer = this.renderer.createDelegate(this);

我运行了,数据展示不出来?
1 楼 yourgame 2008-09-22  
请问,你单击修改婚否的数据后,后台如何交互?

相关推荐

    Ext2.2-用XML做数据源,可编辑Grid的例子.rar

    本示例“Ext2.2-用XML做数据源,可编辑Grid的例子.rar”聚焦于如何利用Ext JS的Grid组件,并结合XML数据源来实现一个可编辑的数据网格。 在Web应用中,数据展示和编辑是常见的需求。Grid组件是Ext JS处理表格数据的...

    ext 读取xml 可编辑grid

    总结来说,EXT JS的EditorGridPanel结合XMLReader提供了强大且灵活的数据处理能力,使得开发者可以轻松地从XML数据源创建一个可编辑的网格界面,极大地提高了Web应用的交互性和用户体验。在实际开发中,可以根据具体...

    EXT-JS Grid 用法

    EXT-JS Grid的基本结构包含行、列和单元格,可以绑定到数据源,如JSON或XML文件,也可以通过Store组件动态加载数据。在EXT Designer中,设计Grid的过程通常包括以下几个步骤: 1. 创建新项目:首先,打开EXT ...

    ext2.2 API

    EXT2.2还引入了强大的数据管理模型,允许与服务器端的数据进行无缝交互,支持各种数据源,如JSON、XML等。 要使用EXT2.2 API,首先你需要下载Adobe AIR查看器。Adobe AIR是一个跨平台的运行环境,它允许开发者创建...

    ext 2.2 air api文档

    2. **数据绑定和Store**: EXT JS 的数据模型和Store概念,允许开发者轻松地连接到各种数据源,如JSON、XML或远程服务,实现数据的双向绑定。 3. **事件处理**: API 文档会解释如何使用事件监听器来响应用户的交互,...

    ext grid数据绑定

    EXT Grid通常使用Store对象来处理数据模型,Store可以连接到各种数据源,如JSON、XML或者远程API,通过Ajax请求加载数据。 1. 数据绑定(Data Binding): 数据绑定是EXT Grid的核心特性之一,它允许Grid与数据源...

    Ext JS - JavaScript Library

    在“ext-2.2”这个压缩包中,我们可以期待找到的是Ext JS 2.2版本的相关文件和资源。这个版本发布于2008年,虽然现在已经有些过时,但对于理解早期的Web开发技术和学习Ext JS的基本结构仍然有价值。以下是关于Ext JS...

    ext gantt2.2

    8. **集成数据源**:EXT Gantt可以与各种数据源无缝对接,如JSON、XML或服务器API,实现动态数据更新。 9. **丰富的API和插件体系**:EXT Gantt提供了强大的API,允许开发人员根据需求添加新的功能或修改默认行为。...

    Ext Grid 导出Excel

    Store可以与各种数据源(如JSON、XML)配合,提供数据绑定到Grid的行。 要实现Excel导出,我们需要关注以下几个关键步骤: 1. **数据收集**:首先,你需要从Grid的Store中获取所有显示的数据。这通常涉及到遍历...

    EXt 可以编辑的grid

    Store会连接到数据源,可以是JSON、XML或者其他格式,它负责从服务器获取数据并提供给Grid Panel使用。 2. **定义Model**:数据模型(Model)定义了数据的结构和字段,它是Store中数据的蓝图。每个字段都有其特定的...

    ext grid网格控件实例

    2. **XML数据源**:当数据以XML格式存储时,EXT Grid可以通过`Ext.data.XmlStore`来解析并加载数据。XML Store需要指定`url`(数据源地址)和`record`(XML节点名),解析XML并映射到Grid的列。XML的节点属性将作为...

    ext grid 显示数据

    1. **创建Grid**: 首先,创建一个Grid需要定义基本配置,如数据源(store)、列模型(columns)以及渲染数据的单元格。通过`Ext.create('Ext.grid.Panel', { ... })`来初始化Grid。 2. **数据源(Store)**: Store...

    Ext框架的Grid使用介绍

    2. **数据源与模型**:EXT JS使用Model来定义数据结构,它包含字段名和类型。Store则结合Model实例化,可以绑定到各种数据源,如JSON、XML或远程服务器数据。 3. **列配置**:EXT JS的列配置允许设置列的显示方式,...

    EXT2.0 GRID 示例

    1. **数据绑定**:EXT GRID可以与各种数据源绑定,例如JSON或XML,通过Store组件实现。Store负责加载、缓存和管理数据,与GRID进行通信,更新视图。 2. **列配置**:GRID的列可以通过配置对象定制,包括列宽、标题...

    Ext 3.0 - 中文API文档

    7. **数据存储**:Store组件负责管理数据集,可以与各种数据源进行交互,如JSON、XML或远程服务器。 8. **事件驱动**:事件系统使得组件间可以相互协作,通过监听和触发事件来实现复杂的业务逻辑。 9. **国际化...

    Ext grid 简单实例

    学习这个实例有助于理解Ext Grid的基本工作原理,特别是如何从外部数据源获取和展示数据。这对于任何想要构建数据驱动的Web应用,尤其是需要强大数据管理功能的开发者来说,都是一个宝贵的起点。通过深入研究和实践...

    Ext 3.3 - 中文API文档

    例如,创建一个简单的表格可能会涉及到`Ext.grid.Panel`的配置,包括列模型、数据源、视图配置等。同时,开发者还可以通过搜索特定API,快速定位到相应的中文解释和用法说明。 总之,EXT 3.3 中文API文档是EXTJS...

    ext2.0 grid 分页实例(php)

    在Ext JS 2.0中,Store通常与远程数据源(例如PHP页面)通过JSON或XML进行通信。 - 为Grid添加分页栏(Paging Toolbar),它包含页码按钮、跳转输入框等元素,用于用户操作分页。 - 配置Store的`paging`属性为`...

    jq-extgrid表格插件

    3. 初始化jq-extgrid,配置各种选项,如数据源、列定义、分页设置等。 4. 调用插件方法,如加载数据、设置排序规则等。 ### 3. 示例代码 ```html &lt;table id="grid"&gt; $(function() { $('#grid').jqGrid({ url: '...

    ext-2.3.0jar包

    2.3.0版本中,`Ext.data.Store`用于存储数据,它可以连接到各种数据源,如JSON、XML或Ajax请求。`Ext.data.Proxy`是数据获取的抽象层,提供了数据读取和写入的接口。同时,`Ext.data.Model`定义了数据字段和验证规则...

Global site tag (gtag.js) - Google Analytics