- 浏览: 42827 次
- 性别:
- 来自: 长沙
最新评论
-
java365:
看了楼主的问题,不过我属于ExtJS 的新手,对其应用还没达到 ...
EXT.DD的drop操作,Target是同group中父子关系的子DropTarget时的处理
前因:
项目需要,快速DEMO,采用EXT组件,想在纯HTML+JS的环境下给客户展示分页效果
后果:
example、API都没有找到,想组合Array Grid 和 Paging两个示例,达不到目的...
GG、BAIDU,找到 高手提供 示例链接:http://ido.nl.eu.org/ext-pagingmemoryproxy/
EXT论坛相关帖子:http://extjs.com/forum/showthread.php?p=56759
恩,要学好E文啊!自勉!
附高手扩展的data.proxy的代码:
js 代码
- /*
- * Ext JS Library 1.1
- * Copyright(c) 2006-2007, Ext JS, LLC.
- * licensing@extjs.com
- *
- * http://www.extjs.com/license
- */
- /**
- * Ext.ux.data.PagingMemoryProxy.js
- *
- * A proxy for local / in-browser data structures
- * supports paging / sorting / filtering / etc
- *
- * @file Ext.ux.PagingMemoryProxy.js
- * @author Ing. Ido Sebastiaan Bas van Oostveen
- *
- * @changelog:
- * @version 1.3
- * @date 30-September-2007
- * - added customFilter config option
- * @version 1.2
- * @date 29-September-2007
- * - fixed several sorting bugs
- * @version 1.1
- * @date 30-August-2007
- * @version 1.0
- * @date 22-August-2007
- *
- */
- Ext.namespace("Ext.ux");
- Ext.namespace("Ext.ux.data");
- /* Fix for Opera, which does not seem to include the map function on Array's */
- if(!Array.prototype.map){
- Array.prototype.map = function(fun){
- var len = this.length;
- if(typeof fun != "function"){
- throw new TypeError();
- }
- var res = new Array(len);
- var thisp = arguments[1];
- for(var i = 0; i < len; i++){
- if(i in this){
- res[i] = fun.call(thisp, this[i], i, this);
- }
- }
- return res;
- };
- }
- /* Paging Memory Proxy, allows to use paging grid with in memory dataset */
- Ext.ux.data.PagingMemoryProxy = function(data, config) {
- Ext.ux.data.PagingMemoryProxy.superclass.constructor.call(this);
- this.data = data;
- Ext.apply(this, config);
- };
- Ext.extend(Ext.ux.data.PagingMemoryProxy, Ext.data.MemoryProxy, {
- customFilter: null,
- load : function(params, reader, callback, scope, arg) {
- params = params || {};
- var result;
- try {
- result = reader.readRecords(this.data);
- } catch(e) {
- this.fireEvent("loadexception", this, arg, null, e);
- callback.call(scope, null, arg, false);
- return;
- }
- // filtering
- if (this.customFilter!=null) {
- result.records = result.records.filter(this.customFilter);
- result.totalRecords = result.records.length;
- } else if (params.filter!==undefined) {
- result.records = result.records.filter(function(el){
- if (typeof(el)=="object"){
- var att = params.filterCol || 0;
- return String(el.data[att]).match(params.filter)?true:false;
- } else {
- return String(el).match(params.filter)?true:false;
- }
- });
- result.totalRecords = result.records.length;
- }
- // sorting
- if (params.sort!==undefined) {
- // use integer as params.sort to specify column, since arrays are not named
- // params.sort=0; would also match a array without columns
- var dir = String(params.dir).toUpperCase() == "DESC" ? -1 : 1;
- var fn = function(r1, r2){
- return r1==r2 ? 0 : r1<r2 ? -1 : 1;
- };
- var st = reader.recordType.getField(params.sort).sortType;
- result.records.sort(function(a, b) {
- var v = 0;
- if (typeof(a)=="object"){
- v = fn(st(a.data[params.sort]), st(b.data[params.sort])) * dir;
- } else {
- v = fn(a, b) * dir;
- }
- if (v==0) {
- v = (a.index < b.index ? -1 : 1);
- }
- return v;
- });
- }
- // paging (use undefined cause start can also be 0 (thus false))
- if (params.start!==undefined && params.limit!==undefined) {
- result.records = result.records.slice(params.start, params.start+params.limit);
- }
- callback.call(scope, result, arg, true);
- }
- });
应用示例代码:
js 代码
- var Example = {
- init : function(){
- // some data yanked off the web
- var myData = [
- ['3m Co',71.72,0.02,0.03,'9/1 12:00am'],
- ['Alcoa Inc',29.01,0.42,1.47,'9/1 12:00am'],
- ['Altria Group Inc',83.81,0.28,0.34,'9/1 12:00am'],
- ['American Express Company',52.55,0.01,0.02,'9/1 12:00am'],
- ['American International Group, Inc.',64.13,0.31,0.49,'9/1 12:00am'],
- ['AT&T Inc.',31.61,-0.48,-1.54,'9/1 12:00am'],
- ['Boeing Co.',75.43,0.53,0.71,'9/1 12:00am'],
- ['Caterpillar Inc.',67.27,0.92,1.39,'9/1 12:00am'],
- ['Citigroup, Inc.',49.37,0.02,0.04,'9/1 12:00am'],
- ['E.I. du Pont de Nemours and Company',40.48,0.51,1.28,'9/1 12:00am'],
- ['Walt Disney Company (The) (Holding Company)',29.89,0.24,0.81,'9/1 12:00am']
- ];
- var ds = new Ext.data.Store({
- proxy: new Ext.ux.data.PagingMemoryProxy(myData),
- reader: new Ext.data.ArrayReader({}, [
- {name: 'company'},
- {name: 'price', type: 'float'},
- {name: 'change', type: 'float'},
- {name: 'pctChange', type: 'float'},
- {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
- ])
- });
- ds.load();
- // example of custom renderer function
- function italic(value){
- return '<i>' + value + '</i>';
- }
- // example of custom renderer function
- function change(val){
- if(val > 0){
- return '<span style="color:green;">' + val + '</span>';
- }else if(val < 0){
- return '<span style="color:red;">' + val + '</span>';
- }
- return val;
- }
- // example of custom renderer function
- function pctChange(val){
- if(val > 0){
- return '<span style="color:green;">' + val + '%</span>';
- }else if(val < 0){
- return '<span style="color:red;">' + val + '%</span>';
- }
- return val;
- }
- // the DefaultColumnModel expects this blob to define columns. It can be extended to provide
- // custom or reusable ColumnModels
- var colModel = new Ext.grid.ColumnModel([
- {id:'company',header: "Company", width: 160, sortable: true, locked:false, dataIndex: 'company'},
- {header: "Price", width: 75, sortable: true, renderer: Ext.util.Format.usMoney, dataIndex: 'price'},
- {header: "Change", width: 75, sortable: true, renderer: change, dataIndex: 'change'},
- {header: "% Change", width: 75, sortable: true, renderer: pctChange, dataIndex: 'pctChange'},
- {header: "Last Updated", width: 85, sortable: true, renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'}
- ]);
- // create the Grid
- var grid = new Ext.grid.Grid('grid-example', {
- ds: ds,
- cm: colModel,
- autoExpandColumn: 'company',
- selModel: new Ext.grid.RowSelectionModel({singleSelect:true}),
- enableColLock:false,
- enableDragDrop:false,
- loadMask: true
- });
- var layout = Ext.BorderLayout.create({
- center: {
- margins:{left:3,top:3,right:3,bottom:3},
- panels: [new Ext.GridPanel(grid)]
- }
- }, 'grid-panel');
- grid.render();
- var gridFooter = grid.getView().getFooterPanel(true);
- var paging = new Ext.PagingToolbar(gridFooter, ds, {
- pageSize: 5,
- displayInfo: true,
- displayMsg: '当前记录 {0} - {1} ,共 {2}',
- emptyMsg: "No queues to display"
- });
- ds.load({params:{start:0, limit:5}});
- }
- };
- Ext.onReady(Example.init, Example);
附:
在EXT2.0里,已经不支持 grid.getView().getFooterPanel(true) 啦。直接作为bbr定义在Ext.grid.GridPanel里。
发表评论
-
EXT2.0 override方法的一个问题发现 及自我救赎 及等待救赎(非水)
2009-09-09 15:55 960不知道怎么用标题来描述清除这个问题.... 成吉思汗.... ... -
调整可编辑表格的列头高度、列高度、留白
2008-07-16 19:39 1659为了和一期项目界面、交互保持一致 被迫要用ext来实现以前做的 ... -
EXT.DD的drop操作,Target是同group中父子关系的子DropTarget时的处理
2008-03-05 14:52 4724-_-\\ ... 标题很拗口,,而且JAVAEYE限制 ... -
变更Ext Window 当modal:true时的灰色背景
2008-01-17 17:19 6168查了下源代码,发现这样可以实现 。修改相关样式定义:.ext- ... -
设置Ext.grid.PropertyGrid中value值 编辑属性为只读
2007-12-20 15:09 5381抛砖啊抛砖。。。 项目需要,使用到PropertyGrid,必 ... -
关于EXT
2007-11-21 16:58 959入窝的时候 想啊 恩 在这里如此张三 这般李四 -_-|| 一 ... -
修改Ext.MessageBox 的按钮文字
2007-11-21 16:48 6849今天用到Ext的Dialog,嵌入系统之后一切O ... -
今日入窝
2007-10-25 17:16 850纯属测试
相关推荐
EXT Grid控件是EXT JS库中的一个核心组件,它用于创建功能丰富的数据网格,能够高效地展示和操作大量数据。EXT Grid广泛应用于J2EE框架中,为Web应用提供了强大的数据展示和交互能力。在本实例中,我们将探讨四种...
在"EXT-GRID+JSON简单应用"中,我们将探讨如何使用EXT-JS的Grid组件与JSON数据源进行集成,以创建一个动态的数据表格。 EXT-JS的Grid组件允许开发者通过定义列模型、存储器和视图来展示数据。在JSON方面,它是一种...
在本文中,我们将关注EXT 4.0中的Array Grid,这是一种基础的表格展示组件,适合用来显示和操作二维数组数据。 Array Grid的核心是`Ext.grid.Panel`,它是EXT JS中的一个核心组件,用于呈现数据表格。`Ext.grid....
Ex4.0共2个压缩包特性,《ext js权威指南》 ...10.3.4 数据汇总功能:ext.grid.featrue.abstractsummary与ext.grid.featrue. summary / 539 10.3.5 分组功能:ext.grid.featrue.grouping / 543 10.3.6 分组汇总...
首先,我们需要了解`Ext.grid.Panel`,这是ExtJS中的核心组件之一,用于创建数据网格。它能够动态加载数据,提供排序、过滤、分页等功能,并且可以自定义列样式和行为。在ExtJS4中,我们可能有以下场景:用户在Grid...
ExtJS Grid是一款强大的JavaScript组件,用于在Web应用中创建数据密集型的表格视图。它由Sencha公司开发,是Ext JS库的核心部分,广泛应用于企业级应用的前端开发,提供丰富的功能和高度的可定制性。这个"ExtJS_grid...
Ext.create('Ext.grid.Panel', { title: '用户列表', store: store, columns: [ {header: 'ID', dataIndex: 'id', width: 50}, {header: '姓名', dataIndex: 'name', flex: 1}, {header: '邮箱', dataIndex: ...
- **Ext.grid**:提供网格视图,支持数据分页、排序、过滤等功能。 - **Ext.form**:表单组件,支持多种输入控件及验证功能。 - **Ext.tree**:树形结构组件,可用于展示层次结构数据。 4. **高级组件** - **...
**Grid** 和 **ComboBox** 等组件都是基于Ext.data进行数据操作的。它们利用这些核心组件来实现诸如异步加载、类型转换、分页等功能。 #### 二、数据格式和支持 Ext.data支持多种数据格式,包括但不限于: - **...
之后,创建一个`Ext.grid.GridPanel`实例,将其`store`属性设置为之前创建的`store`,并配置列和分页工具栏。分页工具栏通过`Ext.PagingToolbar`创建,设置`pageSize`为每页显示的记录数,以及与`store`关联,以便...
此功能主要是为了解决当用户在一个分页的Grid中选择某一行后,在翻页时依然保持该行被选中的状态。本文将通过解析提供的代码片段以及结合ExtJS的相关API文档,详细介绍如何实现在ExtJS Grid中的行跨页选中功能。 ##...
这部分内容将详细讲解如何使用Ext.grid来创建表格,如何配置列、排序、过滤和分页功能,以及如何实现行编辑、拖拽列等功能。 十、Ext类的常用方法 文章最后提到了Ext类的一些常用方法,如addBehaviors、apply、...
- **自定义能力**:可以生成行号、支持复选框全选、动态选择显示的列、本地和远程分页、单元格自定义渲染、可编辑网格、添加/删除行、脏数据提示、大小调整和行拖拽等。 - **与其他组件交互**:Grid之间以及与Tree...
首先,EXTJS提供了`Ext.grid.Panel`类来创建GridPanel,它包含了对表格数据的处理和显示。在实现打印功能时,我们通常不会直接打印整个页面,而是将GridPanel的内容转换为一个适合打印的格式。这就涉及到CSS样式调整...
var columns = Ext.Array.filter(grid.columnManager.columns, ``` 此外,可能在`workbook.js`的77、78行,你需要添加初始化语句,以避免因之前的数据残留导致的格式错误: ```javascript this.styles = []; this....
EXTJS提供了多种预定义的data store类型,包括Simple (Array)、XML和JSON,同时也可以自定义data store以适应非标准格式的数据。例如,EXT论坛上有用户贡献的CSV和ColdFusion数据store实现。 向data store添加数据...
GridPanel是ExtJS中用于显示数据的组件,它可以展示大量数据并支持分页、排序等功能。通过配置列模型(columns),我们可以定义表格的列头、宽度和对齐方式,以及数据字段映射。例如: ```javascript var columns =...
**实用工具(Utils)**则提供了数据格式化、JSON编码解码、Date和Array操作、Ajax请求发送、Cookie管理、CSS管理等多种扩展功能,极大地丰富了EXTJS的功能性和灵活性。 通过以上介绍,初学者可以对EXTJS的基本概念...
achievementsGridPanel = Ext.extend(Ext.grid.GridPanel, { viewWin: null, editWin: null, addWin: null, findWin: null, downloadWin: null, constructor: function (_cfg) { if (_cfg == null) { _cfg ...