`
jarbee
  • 浏览: 28308 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

一些EXTJS2.2使用例子

阅读更多

工作中常用的ExtJS控件使用实例

虽然版本陈旧,框架性的东西还是记录下来,若以后用到好依葫芦画瓢

/**
  *  Grid
  */
// 表格创建
	var sm = new Ext.grid.CheckboxSelectionModel();
	var operation = {
		header : '操作',
		dataIndex : 'orderId',
		align : 'center',
		width : 43,
		renderer : function(val) {
			var htmlStr = '<a onclick="payOrdList.edit(' + val + '); return false;" href="#">' +
						'<img style="border:0px" alt="编辑" src="' + buildURL('/pub/images/tbtn_amend.gif') + '"/></a>';
				htmlStr +=  '<span>|</span>' +
							'<a onclick="payOrdList.remove(' + val + '); return false;" href="#">' +
								'<img style="border:0px" alt="删除" src="' + buildURL('/pub/images/tbtn_delete.gif') + '"/></a>';
				return htmlStr;
		}
	};
	var cmItems = [sm, operation,
		{
			header : '列1',
			dataIndex : 'payMOnth',
			align : 'center',
			width : 57
		},
		{
			header : '列2',
			dataIndex : 'ordernum',
			width : 115
		},
		{
			header : '列3',
			dataIndex : 'startTime',
			// renderer : formateDateAction,
			width : 65
		},
		{
			header : '列4',
			dataIndex : 'nexttime',
			renderer : function(val) { return formateTime(val); },
			width : 116
		},
		// 其它列项
		{
			header : '列N',
			dataIndex : 'cusstatDesc',
			align : 'center',
			width : 63
		}
	];
	var cm = new Ext.grid.ColumnModel(cmItems);
	var gridConfig = Ext.apply(config, {
		sm : sm,
		cm : cm,
		viewConfig : {
			forceFit : false
		}, 
		loadMask : true,
		store : payOrdGridStore,
		tbar : toolbar
	});
	var grid = new Ext.grid.GridPanel(gridConfig);
	
	var rowdblclick = function(grid, rowIndex, eventobj) {
		var store = grid.getStore();
		var orderId = store.getAt(rowIndex).id;
		
		// ... ... ...
	};
	
	grid.on('rowdblclick', rowdblclick);
	
	// 使用SelectionModel 取已选择的行
	var selectedRows = grid.getSelectionModel().getSelections();
	if(selectedRows.length === 0) {
				Ext.Msg.alert(YoushangTips, '至少选择一条记录!');
				return ;
			}
			
			for(var i=0; i<selectedRows.length; i++) {
				orderIds.push(selectedRows[i].id);
			}
			// ... ... ...
	}
	
/**
  *  Grid Plugin(RowExpander),扩展了一个isCollapsed配置项(可指定行默认是否收起)
  */
  // 使用
  var rx = new Ext.grid.RowExpander({
		tpl : new Ext.Template('<div style="margin: 0px 0px 8px 56px;"><ul><li style="list-style-type:disc;"><h2>详细内容:</h2><p style="width: 450px; line-height: 150%; margin: 3px 0px 5px 25px;">{cOntent}<p/></li>{qDesc}</ul></div>'),
		isCollapsed : false,
		enableCaching : false
	});
	var cm = new Ext.grid.ColumnModel([rx,{
			header : '列1',
			dataIndex : 'recIndex',
			align : 'center',
			width : 56
		},
		// 其它列项
		{
			header : '列N',
			dataIndex : 'callstatDesc',
//			align : 'center',
			width : 100
		}
		]);
		var grid = new Ext.grid.GridPanel({
			store : store,
			tbar : toolbar,
			cm : cm,
			plugins : rx,
			loadMask : true
		});
		
    // RowExpander源文件
/*
 * Ext JS Library 2.2
 * Copyright(c) 2006-2008, Ext JS, LLC.
 * licensing@extjs.com
 *
 * http://extjs.com/license
 */

Ext.grid.RowExpander = function(config){
	    Ext.apply(this, config);
	
	    this.addEvents({
	        beforeexpand : true,
	        expand: true,
	        beforecollapse: true,
	        collapse: true
	    });
	
	    Ext.grid.RowExpander.superclass.constructor.call(this);
	
	    if(this.tpl){
	        if(typeof this.tpl == 'string'){
	            this.tpl = new Ext.Template(this.tpl);
	        }
	        this.tpl.compile();
	    }
	
	    this.state = {};
	    this.bodyContent = {};
	};
	
	Ext.extend(Ext.grid.RowExpander, Ext.util.Observable, {
	    header: "",
	    width: 20,
	    sortable: false,
	    fixed:true,
	    menuDisabled:true,
	    dataIndex: '',
	    id: 'expander',
	    lazyRender : true,
	    enableCaching: true,
	    isCollapsed : true,	// 默认行是否收缩标志
	
	    getRowClass : function(record, rowIndex, p, ds){
	        p.cols = p.cols-1;
	        var content = this.bodyContent[record.id];
	        if(!content && !this.lazyRender){
	            content = this.getBodyContent(record, rowIndex);
	        }
	        if(content){
	            p.body = content;
	        }
	        if(this.isCollapsed) return this.state[record.id] ? 'x-grid3-row-expanded' : 'x-grid3-row-collapsed';
	        if(!this.isCollapsed) return this.state[record.id] ? 'x-grid3-row-collapsed' : 'x-grid3-row-expanded';
	    },
	
	    init : function(grid){
	        this.grid = grid;
	        if(!this.isCollapsed) this.lazyRender = false;
	
	        var view = grid.getView();
	        view.getRowClass = this.getRowClass.createDelegate(this);
	
	        view.enableRowBody = true;
	
	        grid.on('render', function(){
	            view.mainBody.on('mousedown', this.onMouseDown, this);
	        }, this);
	    },
	
	    getBodyContent : function(record, index){
	        if(!this.enableCaching){
	            return this.tpl.apply(record.data);
	        }
	        var content = this.bodyContent[record.id];
	        if(!content){
	            content = this.tpl.apply(record.data);
	            this.bodyContent[record.id] = content;
	        }
	        return content;
	    },
	
	    onMouseDown : function(e, t){
	        if(t.className == 'x-grid3-row-expander'){
	            e.stopEvent();
	            var row = e.getTarget('.x-grid3-row');
	            this.toggleRow(row);
	        }
	    },
	
	    renderer : function(v, p, record){
	        p.cellAttr = 'rowspan="2"';
	        return '<div class="x-grid3-row-expander">&#160;</div>';
	    },
	
	    beforeExpand : function(record, body, rowIndex){
	        if(this.fireEvent('beforeexpand', this, record, body, rowIndex) !== false){
	            if(this.tpl && this.lazyRender){
	                body.innerHTML = this.getBodyContent(record, rowIndex);
	            }
	            return true;
	        }else{
 	            return false;
 	        }
 	    },
 	
 	    toggleRow : function(row){
 	        if(typeof row == 'number'){
 	            row = this.grid.view.getRow(row);
 	        }
 	        this[Ext.fly(row).hasClass('x-grid3-row-collapsed') ? 'expandRow' : 'collapseRow'](row);
 	    },
 	
 	    expandRow : function(row){
 	        if(typeof row == 'number'){
 	            row = this.grid.view.getRow(row);
 	        }
 	        var record = this.grid.store.getAt(row.rowIndex);
 	        var body = Ext.DomQuery.selectNode('tr:nth(2) div.x-grid3-row-body', row);
 	        if(this.beforeExpand(record, body, row.rowIndex)){
 	            this.state[record.id] = true;
 	            Ext.fly(row).replaceClass('x-grid3-row-collapsed', 'x-grid3-row-expanded');
 	            this.fireEvent('expand', this, record, body, row.rowIndex);
 	        }
 	    },
 	
 	    collapseRow : function(row){
 	        if(typeof row == 'number'){
 	            row = this.grid.view.getRow(row);
 	        }
 	        var record = this.grid.store.getAt(row.rowIndex);
 	        var body = Ext.fly(row).child('tr:nth(1) div.x-grid3-row-body', true);
 	        if(this.fireEvent('beforecollapse', this, record, body, row.rowIndex) !== false){
 	            this.state[record.id] = false;
 	            Ext.fly(row).replaceClass('x-grid3-row-expanded', 'x-grid3-row-collapsed');
 	            this.fireEvent('collapse', this, record, body, row.rowIndex);
 	        }
 	    }
 	});


  
/**
  *  Toolbar
  */
  var toolbar = new Ext.Toolbar({
		border : true,
		autoWidth : true,
		items : [{
			text : '按钮1',
			tooltip : '提示',
			iconCls : 'tb-distribute',
			hidden : !isAdmin,
			handler : function() {
				// ... ... ...
			}
		}
		, '-', {
			text : '按钮2',
			tooltip : '提示',
			iconCls : 'tb-customerview',
			handler : function() {
				// ... ... ...
			}
		}]
	});
	
/**
  *  DataStore
  */

var myStore = new Ext.data.Store({
		proxy : new Ext.data.XXXProxy({
			XXXFunc : function(params) {
				if (params && !params.start && !params.limit) {
					params.start = 0;
					params.limit = 700;
				}
			
				var conditions = this.filter.getValue();
				if(params.ownerId) {
					conditions.ownerId = params.ownerId;
				}
				
				var data = payOrdApi.findHeadInfo(params.start, params.limit, conditions);
				
				return {
					total : data.length,
					list : data
				};
			}.bind(this)
	}),

	reader : new Ext.data.JsonReader({
		root : 'list',
		totalProperty : 'total',
		id : 'orderId'
			} , ['orderId', 'payMOnth', /*... ... ...*/]
		)
	});
	
	myStore.load({
			callback : function() {
				// ... ... ...
				var num = this.getCount();
				// ... ... ...
			}
		});
	
/**
  *  Layout And View
  */
  var view = new Ext.Viewport({
			layout : 'fit',
			items : [{
					layout : 'border',
					defaults : {autoScroll : true},
					items : [{
						region : 'north',	
						title : '上部区域',
						height : 265,
						shim : false,
						collapsible: true,
						items : [panel]
					}, {
						id : 'addTrack_panel',
						hidden : !isAssignedFlag,
						region: 'east',
						title : '右部区域',
						width : 405,
						bodyStyle : 'padding-top:19px;',
						shim : false,
						collapsible: true,
						collapsed : true,
						items : [firstSingleTrackView.panel, singleTrackView.panel]
					}, {
						region: 'center',
						layout : 'fit',
						title : '中心区域',
						border: true,
						shim : false,
						items : [grid]
				}]
			}]
		});
		
		view.show();
	
	
分享到:
评论

相关推荐

    extjs 2.2(oozie需要的)

    在这个例子中,"extjs 2.2(oozie需要的)" 指出 ExtJS 2.2 是 Oozie 的一部分,可能用于构建其用户界面或者提供某些功能。将 `ext-2.2.zip` 解压到 `/opt/cloudera/parcels/CDH/lib/oozie/libext` 目录下,意味着这个...

    extjs2.2技术文档与实例

    在2.2版本中,ExtJS引入了一些新功能和改进,例如增强了表单组件、优化了性能以及增加了新的组件,如树形网格和拖放功能。 实例部分通常包含了一系列的示例代码,演示了如何使用ExtJS创建各种复杂的UI效果。这些...

    ExtJS2.2网络硬盘系统.zip

    网络硬盘系统是现代信息化社会中数据存储和共享的重要工具,而本项目“ExtJS2.2网络硬盘系统”就是一个典型的例子,它巧妙地结合了前端的ExtJS2.2框架和后端的SSH(Struts2+Spring+Hibernate)技术栈,构建出一个...

    Extjs2.2+net.mvc+net.spring+NHibernate后台管理系统

    标题 "Extjs2.2+net.mvc+net.spring+NHibernate后台管理系统" 涉及的是一个使用前端框架ExtJS 2.2与后端技术ASP.NET MVC、Spring框架以及ORM工具NHibernate构建的管理系统的实例。这个系统展示了如何将这些技术有效...

    ExtJS2.2_图书管理系统

    这个"ExtJS2.2_图书管理系统"项目是学习和实践Web前端开发、后端Java编程以及数据库管理的好例子。通过分析和研究,开发者不仅可以提升ExtJS的使用技巧,还能了解到完整的Web应用开发流程,对整个系统的设计和实现有...

    ExtJS2.2学习:再论el和contentEl的区别

    在这个例子中,主Panel使用`el`属性,而内部的子Panel使用`contentEl`。这导致了`id='panel_contentEl2'`的内容被内嵌到子Panel中,且子Panel的高度限制为150像素。这样,我们可以看到一个嵌套的结构,其中的内容...

    ext 2.0.2 源码 例子

    EXTJS是一个广泛使用的JavaScript库,特别适用于构建富客户端应用程序。EXT 2.0.2是EXTJS的一个版本,它在2.0的基础上进行了优化和改进,提供了更多的功能和改进的性能。这个版本的EXTJS主要关注用户体验、组件的...

    oozie最简单的安装说明+ExtJS-2.2包【亲测100%成功】

    在这个例子中,提供了`ext-2.2.zip`文件,这正是Oozie需要的版本。解压缩此文件后,将包含的库文件放置到Oozie的正确目录下,通常是`oozie-sharelib-extjs`。 **安装Oozie步骤** 1. 下载Oozie的发行版:访问Apache...

    Extjs4入门例子教程

    为了更好地理解和掌握ExtJS,下面将通过一个简单的示例来演示如何使用ExtJS构建一个基本的Web应用程序。 假设我们要创建一个包含文本框和按钮的简单表单,当点击按钮时,文本框中的内容会显示在一个弹出的对话框中...

    Extjs应用教程 提高篇

    在“ExtJS应用教程 提高篇”中,我们看到一系列教程,涵盖了从基础到高级的EXTJS使用技巧,特别是针对EXTJS 2.2版本。教程内容包括了如何使用EXTJS组件,如GridPanel和ComboBox,以及如何动态生成数据。 在提高篇的...

    Ext 2.2 开发参考小例子

    9. **图表和图形**:虽然Ext 2.2的图表功能相对较弱,但仍然有一些基础的图表组件,如条形图、饼图等。通过这些例子,我们可以了解如何在Web应用中呈现数据可视化。 10. **国际化和本地化**:Ext JS支持多语言应用...

    ext-2.2.zip

    在CDH使用oozie 的时候需要安装ext-2.2.zip; 新增和改进的功能包括: 1、FileUploadField 文件上传 体验例子见:http://extjs.com/deploy/dev/examples/form/file-upload.html 2、GMapPanel GMap扩展 体验...

    Extjs全部资料在此下载

    这个压缩包包含的资源显然是关于ExtJS的全面学习材料,包括实际的例子和教程,这将有助于深入理解ExtJS的核心概念和功能。 首先,我们看到有一个名为"ExtJS2.0实用简明教程.chm"的文件,这很可能是一个关于ExtJS ...

    ExtJs官方网站中文的入门指南 javascript

    本节将通过一个简单的例子演示如何使用ExtJs创建动态页面。 ##### **2.1 解压安装** - 将下载好的压缩包解压至合适的目录(例如`C:\code\Ext\v1.0`)。 - 在此目录下创建一个名为`tutorial`的文件夹,用于存放示例...

    extJS学习包和中问手册

    extdocs-2.2.zip:这可能是ExtJS 2.2版本的官方文档,包含详细的API参考和教程。文档通常分为几个部分,如类库概述、类系统、组件、布局、数据绑定等。开发者可以查阅这些文档来查找特定函数、配置选项或组件的用法...

    ExtJs教程_完整版.pdf

    - **概述**: FeedViewer是一个展示了ExtJS多种特性的复杂案例,虽然对于初学者来说可能过于复杂,但它是了解ExtJS强大功能的好例子。 - **特点**: 展示了如何使用ExtJS创建复杂的用户界面,如网格、树形视图等。 **...

    ExtJs获取表单元素的值

    对于前端开发者来说,掌握如何高效地操作表单元素是必不可少的一项技能,尤其是在使用像ExtJs这样的强大框架时。下面将从几个方面展开讨论:ExtJs表单的基本概念、获取表单元素值的方法、实际应用中的技巧以及一些...

    EXT2.2开发环境

    EXT2.2的开发环境搭建是学习EXTJS框架的基础步骤,对于深入理解和熟练运用EXTJS至关重要。 EXT2.2的开发环境主要包括以下几个部分: 1. **Web服务器**:由于EXTJS通常需要通过HTTP协议加载,因此首先需要一个本地...

    我与EXTJS有个约会

    - **examples**:提供了一些使用EXTJS技术实现的小示例。 - **resources**:存放EXTJS UI资源文件,如CSS、图片等。 - **source**:存放未经压缩的EXTJS源代码。 - **Ext-all.js**:压缩后的EXTJS完整源代码。 - **...

    myextjs.rar

    extjs2.2核心文件,含一个helloworld的例子,说明文档见链接https://blog.csdn.net/ldy889/article/details/100008043

Global site tag (gtag.js) - Google Analytics