




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ext2.0框架的Grid使用介绍 Ext2.0框架的Grid使用介绍 最近空闲时间在学习Ext2.0框架,只有一个字的感叹“强”,我从未想到JS代码能够写出这么绚丽的Web页面出来,以前看到YUI,惊若天人,如今看到EXT2.0的东西,更是感觉震撼。Ext2.0是一个JS框架,它的Grid控件和其它可以显示数据的控件,能够支持多种数据类型,如二维数组、Json数据和XML数据,甚至包括我们自定义的数据类型。Ext为我们提供了一个桥梁Ext.data.Store,通过它我们可以把任何格式的数据转化成grid可以使用的形式,这样就不需要为每种数据格式写一个grid的实现了。 首先,一个表格应该有列定义,即定义表头ColumnModel:/ 定义一个ColumnModel,表头中有四列var cm = new Ext.grid.ColumnModel( header:编号,dataIndex:id, header:性别,dataIndex:sex, header:名称,dataIndex:name, header:描述,dataIndex:descn);cm.defaultSortable = true; 该ColumnModel定义了表格的四个列,其每列的名称和对应的数据键。请注意defaultSortable属性,即为每个列都安上一个可以排序的功能。如果只想某些列举有该功能,可以设置:header:编号,dataIndex:id,Sortable:true, 现在就来看看这个Ext.data.Store是如何转换三种数据的。1.二维数组:/ ArrayDatavar data = 1,male,name1,descn1, 2,male,name1,descn2, 3,male,name3,descn3, 4,male,name4,descn4, 5,male,name5,descn5;/ ArrayReadervar ds = new Ext.data.Store( proxy: new Ext.data.MemoryProxy(data), reader: new Ext.data.ArrayReader(, name: id,mapping: 0, name: sex,mapping: 1, name: name,mapping: 2, name: descn,mapping: 3 );ds.load(); ds要对应两个部分:proxy和xy告诉我们从哪里获得数据,reader告诉我们如何解析这个数据。现在用的是Ext.data.MemoryProxy,它将内存中的数据data作为参数传递。Ext.data.ArrayReader专门用来解析数组,并且告诉我们它会按照定义的规范进行解析,每行按顺序读取四个数据,第一个叫id,第二个叫sex,第三个叫name,第四个descn。这些是跟cm定义中的dataIndex对应的。这样cm就知道哪列应该显示那条数据了。 mapping属性用于标记data中的读取后的数据与标头的映射关系,一般是不用设置的。但如果我们想让sex的数据中name栏中出现,可以设置mapping值。即id的mapping为2,后者为0。 记得要执行一次ds.load(),对数据进行初始化。 数据的显示显得非常简单:HTML文件:JS文件:var grid = new Ext.grid.GridPanel( el: grid, ds: ds, cm: cm);grid.render();其显示结果为:2.如何在表格中添加CheckBox呢?var sm = new Ext.grid.CheckboxSelectionModel();var cm = new Ext.grid.ColumnModel( new Ext.grid.RowNumberer(),/自动行号 sm,/添加的地方 header:编号,dataIndex:id, header:性别,dataIndex:sex, header:名称,dataIndex:name, header:描述,dataIndex:descn);var grid = new Ext.grid.GridPanel( el: grid3, ds: ds, cm: cm, sm: sm,/添加的地方 title: HelloWorld);3.如何做Grid上触发事件呢?下面是一个cellclick事件grid.addListener(cellclick, cellclick);function cellclick(grid, rowIndex, columnIndex, e) var record = grid.getStore().getAt(rowIndex); /Get the Record var fieldName = grid.getColumnModel().getDataIndex(columnIndex); /Get field name var data = record.get(fieldName); Ext.MessageBox.alert(show,当前选中的数据是+data);4.如何做Grid中做出快捷菜单效果:grid.addListener(rowcontextmenu, rightClickFn);/右键菜单代码关键部分var rightClick = new Ext.menu.Menu( id:rightClickCont, /在HTML文件中必须有个rightClickCont的DIV元素 items: id: rMenu1, handler: rMenu1Fn,/点击后触发的事件 text: 右键菜单1 , /id: rMenu2, /handler: rMenu2Fn, text: 右键菜单2 );function rightClickFn(grid,rowindex,e) e.preventDefault(); rightClick.showAt(e.getXY();function rMenu1Fn() Ext.MessageBox.alert(right,rightClick);其Grid如下:5.如何将一列中的数据根据要求进行改变呢?比如说性别字段根据其male或female改变显示的颜色,这种ColumnMode中设计:var cm = new Ext.grid.ColumnModel( new Ext.grid.RowNumberer(), sm, header:编号,dataIndex:id, header:性别,dataIndex:sex,renderer:changeSex, header:名称,dataIndex:name, header:描述,dataIndex:descn);cm.defaultSortable = true;function changeSex(value) if (value = male) return 红男; else return 绿女; 其它两种数据的Grid显示是相同的,其不同之处在于数据获取的过程:6.Json数据至于这种数据的类型请大家自己看Ajax的书籍:/JsonDatavar data = coders: id: 1, sex: male, name:McLaughlin, descn: brettnewI , id: 2, sex: male,name:Hunter, descn: , id: 3, sex: female,name:Harold, descn: , id: 4, sex: male,name:Harolds, descn: , musicians: id: 1, name: Clapton, descn: guitar , id: 2, name: Rachmaninoff, descn: piano /ds使用的MemoryProxy对象和JsonReader对象var ds = new Ext.data.Store( proxy: new Ext.data.MemoryProxy(data), reader: new Ext.data.JsonReader(root: coders, name: id, name: sex, name: name, name: descn ) );ds.load();var grid = new Ext.grid.GridPanel( el: grid3, ds: ds, cm: cm, sm: sm, title: HelloWorld, autoHeight: true/一定要写,否则显示的数据会少一行);grid.render();7.使用XML数据:注意,读取XML数据必须在服务器上进行。XML数据test.xml的内容: 2 1 male Taylor Coder var ds3 = new Ext.data.Store( url: test.xml, /XML数据 reader: new Ext.data.XmlReader(record: item, /使用XmlReader对象 name: id, name: sex, name: name, name: descn );8.从服务器获取数据和数据翻页控件从一个服务器文件,如ASP、JSP或Servlet中获得数据二维Array、JSON或XML数据,也可以被Ext读取,并被Grid显示:服务器文件data.asp:% start = cint(request(start) limit = cint(request(limit) dim json json=cstr(totalProperty:100,root:) for i = start to limit + start-1 json =json + cstr(id:) +cstr(i) + cstr(,name:name) + cstr(i) + cstr(,descn:descn) + cstr(i) + cstr() if i limit + start - 1 then json =json + , end if next json = json + response.write(json)%我们可以看到,这个页面会根据传入的start和limit的不同,返回不同的数据,其实质是个分页的代码。下面是start=0,limit=10的JSON数据: totalProperty:100,root:id:0,name:name0,descn:descn0,id:1,name:name1,descn:descn1,id:2,name:name2,descn:descn2,id:3,name:name3,descn:descn3,id:4,name:name4,descn:descn4,id:5,name:name5,descn:descn5,id:6,name:name6,descn:descn6,id:7,name:name7,descn:descn7,id:8,name:name8,descn:descn8,id:9,name:name9,descn:descn9我们使用分页控件来控制Grid的数据:Ext.onReady(function() var sm = new Ext.grid.CheckboxSelectionModel(); var cm = new Ext.grid.ColumnModel( new Ext.grid.RowNumberer(), sm, header:编号,dataIndex:id, header:性别,dataIndex:sex, header:名称,dataIndex:name, header:描述,dataIndex:descn ); cm.defaultSortable = true; var ds = new Ext.data.Store( proxy: new Ext.data.HttpProxy(url:data.asp), reader: new Ext.data.JsonReader( totalProperty: totalProperty, root: root , name: id, name: name, name: descn ) ); ds.load(params:start:0,limit:10); var grid = new Ext.grid.GridPanel( el: grid3, ds: ds, cm: cm, sm: sm, title: ASP-JSON, bbar: new Ext.PagingToolbar( pageSize: 10, store: ds, displayInfo: true, displayMsg: 显示第 0 条到 1 条记录,一共 2 条, emptyMsg: 没有记录 ), tbar: new Ext.PagingToolbar( pageSize: 10, store: ds, displayInfo: true, displayMsg: 显示第 0 条到 1 条记录,一共 2 条, emptyMsg: 没有记录 ) ); grid.render();)10.如何在Grid的上方添加按钮呢?添加按钮的关键之处在于tbar或bbar属性设置Toolbar工具条:var grid = new Ext.grid.GridPanel( el: grid3, ds: ds, cm: cm, s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络通信java面试题及答案
- 消化内科面试题库及答案
- 2026届陕西省渭南市潼关县高一化学第一学期期末质量检测试题含解析
- 大专阿语考试题及答案
- 校车安全操作培训内容
- 浙江初会考试试题及答案
- 家电公司拓展训练组织规定
- 2026届山东省昌邑市文山中学化学高二第一学期期末学业水平测试试题含答案
- 保安理论知识培训总结课件
- 保安理论培训知识课件
- 2025年高考生物甘肃卷试题答案解读及备考指导(精校打印)
- WST856-2025安全注射标准解读
- 2025年国有企业管理岗竞聘笔考试试题库及答案
- 医美项目规划方案(3篇)
- 2025年全国反诈骗知识竞赛试题含答案
- IATF16949中英文对照版2025-10-13新版
- 心之所向·素履以往+课件-2025-2026学年高三上学期开学第一课主题班会
- 2025秋人教版英语八年级上Unit 1 全单元听力材料文本及翻译
- 急性胰腺炎护理小讲课
- 电站安全急救课件
- 新型医药销售外包(CSO)行业跨境出海项目商业计划书
评论
0/150
提交评论