日期:2014-05-16 浏览次数:20461 次
工作中常用的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 : fun