




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ext.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();)9.如何在Grid的上方添加按钮呢?添加按钮的关键之处在于tbar或bbar属性设置Toolbar工具条:var grid = new Ext.grid.GridPanel( el: grid3, ds: ds, cm: cm, sm: sm, title: HelloWorld, tba
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 60947-8:2003/AMD1:2006 FR-D Amendment 1 - Low-voltage switchgear and controlgear - Part 8: Control units for built-in thermal protection (PTC) for rotating electrical ma
- 【正版授权】 IEC 60598-2-1:1979/AMD1:1987 EN-D Amendment 1 - Luminaires. Part 2: Particular requirements. Section One: Fixed general purpose luminaires
- 【正版授权】 IEC 61643-11:2025 EN-FR Low-voltage surge protective devices - Part 11: Surge protective devices connected to AC low-voltage power systems - Requirements and test methods
- 北汽汽修知识培训班课件
- 校园防欺凌安全知识培训课件
- 航空急救试题及答案
- 钎焊相关试题及答案
- 器械清洗试题及答案
- 信号工考试试题及答案
- 校园保洁安全知识培训课件
- 钱大妈合同协议书
- 育苗基地转让合同协议
- 静脉治疗的质量管理
- 脑-耳交互神经调控-全面剖析
- 矿用圆环链简介
- 水利工程安全事故案例分析
- 《新入职护士培训大纲》
- 《现代酒店管理与数字化运营》高职完整全套教学课件
- 叶类药材鉴定番泻叶讲解
- 药物制剂生产(高级)课件 5-11 清场管理
- 2025安徽安庆高新投资控股限公司二期招聘8人高频重点提升(共500题)附带答案详解
评论
0/150
提交评论