`
erichua
  • 浏览: 516375 次
  • 性别: Icon_minigender_2
  • 来自: 远方
社区版块
存档分类
最新评论

Extjs学习总结---RowExpander 的异步调用

阅读更多

RowExpander是Extjs中grid的一个插件,可以在一行下再展现数据。实现了非常方便的parent-detail的效果。

1.加入mousedown事件处理

if (Ext.ux.grid.RowExpander) {
				Ext.apply(Ext.ux.grid.RowExpander.prototype, {
					getDataFn : null,
					onMouseDown : function(e, t) {

						if (t.className == 'x-grid3-row-expander') {
							e.stopEvent();
							var row = e.getTarget('.x-grid3-row');
							var viewRow = row;
							if (typeof viewRow == 'number') {
								viewRow = this.grid.view.getRow(viewRow);
							}
							var record = this.grid.store
									.getAt(viewRow.rowIndex);
							if (!record.data.checkSignerInvoicess) {

								var mark= new Ext.LoadMask(Ext.getBody(), {
									msg : 'Loading data...',
									removeMask : true
								});
								mk.show();
								this.getDataFn (record, this,
										function(expander) {
											// 展开该行
										expander.toggleRow(viewRow.rowIndex);
										mark.hide();
									});

								return;
							}
							this.toggleRow(row);
						}
					}
				});
			}

 2.制作获取数据函数

function GetInvoices(record, expander, callback) {
				Ext.Ajax.request( {
					url : 'getDetailInvoices.json',
					params : {
						'chkNo' : record.data.chkNo,
						'vendorNo' : record.data.vendNo
					},
					success : function(response) {
						var data = Ext.decode(response.responseText);
						if (!data.success) {
							showError(data.message, checkBooks);
							return true;
						}
						// 设置模板中所需要的record数据,并展开该行
					record.data.checkSignerInvoicess = data.records;
					record.commit();

					if (callback) {
						callback(expander);// 一定要回调该函数,否则不能展开
				}
			},
			failure : function() {
				if (callback) {
					callback(expander);
				}
			}
				})
			}
			;

 3.制作expander

var expander = new Ext.ux.grid.RowExpander(
					{

						tpl : new Ext.XTemplate(

								'<div class="x-grid-group-title" style="margin-left:10%">',
								'<table class="x-grid3-row-table" cellspacing="0" cellpadding="0" border="0" >',
								'<thead>',
								' <tr class="x-grid3-hd-row"><td  class="x-grid3-hd x-grid3-cell x-grid3-td-11" >seqNo</td>	<td  class="x-grid3-hd x-grid3-cell x-grid3-td-11" >status</td>	<td  class="x-grid3-hd x-grid3-cell x-grid3-td-11" >amt</td>	<td  class="x-grid3-hd x-grid3-cell x-grid3-td-11" >discAmt</td>	<td  class="x-grid3-hd x-grid3-cell x-grid3-td-11" >payAmt</td>	<td  class="x-grid3-hd x-grid3-cell x-grid3-td-11" >vendNo</td>	<td  class="x-grid3-hd x-grid3-cell x-grid3-td-11" >cashAcctCurrCd</td>	<td  class="x-grid3-hd x-grid3-cell x-grid3-td-11" >altVendNo</td> </tr>',
								'</thead>',

								'<tpl for="checkSignerInvoicess">',
								'<tr><td>{seqNo}</td>	<td>{status}</td>	<td>{amt}</td>	<td>{discAmt}</td>	<td>{payAmt}</td>	<td>{vendNo}</td>	<td>{cashAcctCurrCd}</td>	<td>{altVendNo}</td></tr>',
								'</tpl>', '</table>', '</div>'),
						lazyRender : true,
						getDataFn : GetInvoices
					// 注册回调函数
					});

 4.使用expand

//column中
var columns = new Ext.grid.ColumnModel( [
					new Ext.grid.RowNumberer(), sm, expander, {

//grid中
var grid = new Ext.grid.GridPanel( {
				title : 'Payment Information',
				renderTo : 'my-tabs',
				store : initalStore,
				cm : columns,
				sm : sm,
				plugins : expander,

 5.效果



 

  • 大小: 101.1 KB
分享到:
评论
3 楼 hello_world_wdq 2015-07-29  
真是坑爹,这能用吗,害我半天时间浪费了
2 楼 ubuntu的疯狂 2015-04-10  
第一段代码怎么用????求解释!!弄了很久还是不得结果……
1 楼 MengShadow 2013-03-19  
mk.show(); 错了!

相关推荐

    语言程序设计资料:ExtJs学习笔记-2积分.doc

    语言程序设计资料:ExtJs学习笔记-2积分.doc

    ExtJs常用布局--layout详解实例代码

    ExtJs常用布局--layout详解实例代码: ExtJs常见的布局方式有:border、form、absolute、column、accordion、table、fit、card、anchor 另外,不常见的布局有:tab、vbox、hbox 具体使用方法可见该文件的案例代码。 ...

    extjs-620-docs.zip

    extjs-620-docs官方文档extjs-620-docs官方文档extjs-620-docs官方文档

    extjs异步树-每个节点都异步加载-前后台代码都有-附整个工程

    在家研究了一下extjs异步树,-每个节点都异步加载-前后台代码都有-附整个工程-运行通过-前台代码请看doctree.js,后台代码请看TreeService.java,运行环境:Myeclipse6.5+tomcat7.0.27

    extjs-theme-bootstrap

    "extjs-theme-bootstrap" 是针对 EXTJS4 的一个主题,它借鉴了 Bootstrap 的设计风格,让 EXTJS4 应用程序具有更加现代化和一致的外观。 Bootstrap 是一个流行的前端开发框架,由 Twitter 推出,主要用于构建响应式...

    ExtJS快速入门--传智播客--蔡世友

    ExtJS快速入门--传智播客--蔡世友

    extJs-5.0.1-gpl(part1)

    extJs-5.0.1-gpl附带sencha cmd安装程序、ruby编译包(分为32位和64位)和教程,一共四部分

    extjs2----关于extjs 的使用,操作

    描述中提到内容较为初级,适合初学者学习,这表明我们将探讨的是ExtJS的基础概念和常用组件。 首先,让我们来了解一下ExtJS的核心概念。ExtJS基于组件模型,允许开发者构建复杂的用户界面,这些组件可以是按钮、...

    extjs-theme-bootstrap-master.zip

    "extjs-theme-bootstrap-master.zip" 文件很可能是ExtJS的一个主题包,它集成了Bootstrap的样式,使得ExtJS组件能够呈现出Bootstrap的经典外观。 在深入讲解这个主题之前,让我们先了解一下基础概念: 1. **ExtJS*...

    extjs-docs-6.0.0-classic.part01.rar

    Ext JS 6最大的变化就是将Ext JS和Touch合并为一个单一的框架。之前的框架的核心(数据、控制器、模型等等)已被调和为一个单一的公共平台。这样,数据和逻辑就能共享,从而帮助开发人员进一步去优化他们的应用程序...

    extjs-OA extjs-oa

    一个extjs的OA项目 extjs-OA extjs-oaextjs-OA extjs-oa

    ExtJS----HelloWorld程序源码

    在"ExtJS----HelloWorld程序源码"中,我们将会看到如何使用ExtJS来创建一个简单的“你好,世界!”应用。以下是对这个示例中涉及的主要知识点的详细解释: 1. **引入ExtJS库**:首先,你需要在HTML文件中引入ExtJS...

    ExtJS-4.2.2-gpl.rar

    总结,"ExtJS-4.2.2-gpl.rar"是一个全面的学习和开发资源,涵盖了ExtJS的核心部分。通过深入研究这个压缩包中的内容,开发者不仅可以掌握ExtJS的基本用法,还能了解到高级特性和最佳实践,从而在Web开发领域取得更大...

    ExtJS-MVC-用户列表实例

    总结起来,这个"ExtJS-MVC-用户列表实例"展示了如何使用ExtJS的MVC架构来构建一个功能完整的Web应用,包括定义数据模型、创建视图来展示数据、设置控制器来处理用户交互,以及利用Store进行数据管理。同时,...

    Extjs6.2 生成的admin-dashboard官方模板

    Extjs6.2 生成的admin-dashboard官方模板

    extjs-3.0-all-src

    总之,"extjs-3.0-all-src"包含的是ExtJS 3.0的全部源代码,对学习和研究该框架的实现原理以及定制开发非常有帮助。通过理解和掌握这些知识点,开发者可以利用ExtJS 3.0创建功能强大、用户体验优秀的Web应用程序。

    extjs-620-docs-离线文档

    extjs-620-docs,6.2.0离线文档,解压后可以布署到web服务器

    ExtJS入门教程-超级详细-共36页 完整版 PDF

    ExtJS入门教程-超级详细-共36页 完整版 PDF,电子书方便阅读和分享。

Global site tag (gtag.js) - Google Analytics