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
分享到:
相关推荐
一个extjs的OA项目 extjs-OA extjs-oaextjs-OA extjs-oa
extjs-620-docs官方文档extjs-620-docs官方文档extjs-620-docs官方文档
extjs-basex.js extjs-basex.js extjs-basex.js
此"extjs-620-docs.rar"压缩包包含了该版本的完全离线版API文档,旨在解决在没有网络连接或网络环境不稳定时,开发者仍然可以便捷地查阅和学习ExtJS 6.2.0的相关知识。 API 文档是任何开发者的重要工具,特别是对于...
在"extjs-4.1.1.zip"这个压缩包中,包含了ExtJS框架的4.1.1版本,这是一个成熟的版本,具有丰富的功能和优化的性能。 ExtJS的核心特性包括组件化设计、可定制的布局管理、强大的数据绑定机制以及一系列预设的UI组件...
extjs-cmd 脚手架安装包2 extjs-cmd 脚手架安装包3 extjs-cmd 脚手架安装包4
"extjs-theme-bootstrap" 是针对 EXTJS4 的一个主题,它借鉴了 Bootstrap 的设计风格,让 EXTJS4 应用程序具有更加现代化和一致的外观。 Bootstrap 是一个流行的前端开发框架,由 Twitter 推出,主要用于构建响应式...
extjs-4.1.1 ExtJs所有文档及库文件,在官网下的,这个版本很好,放在这方便大家下载!
extJs-5.0.1-gpl附带sencha cmd安装程序、ruby编译包(分为32位和64位)和教程,一共四部分
extjs-core 3.0 beta版extjs-core 3.0 beta版SDK extjs-core 3.0 beta版extjs-core 3.0 beta版
extjs-6.5.3离线API文档,是学习和开发的必要工具。希望有所帮助!
你可以使用`dwr.util`对象来异步调用服务器端方法,并在回调函数中处理返回的数据。 4. **数据交互**:当用户操作树(例如点击展开节点)时,触发相应的事件监听器。监听器通过DWR调用服务器端方法获取或更新节点...
ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架。功能丰富,无人能出其右。无论是界面之美,还是功能之强,ext的表格控件都高居榜首。单选行,多选行,高亮显示选中的行,推拽改变列...
Ext JS 4.2.6.1811 Release Date: October 5, 2016 Version Number: 4.2.6.1811 ext-src class 926
extjs-7.0.0-docs, EXT 7.0.0 官方离线文档包, 希望可以助力于您
extjs-660-docs,EXT官方离线文档包, 希望可以且助力于您
"extjs-theme-bootstrap-master.zip" 文件很可能是ExtJS的一个主题包,它集成了Bootstrap的样式,使得ExtJS组件能够呈现出Bootstrap的经典外观。 在深入讲解这个主题之前,让我们先了解一下基础概念: 1. **ExtJS*...
extjs-4.1.1为extjs官方免费版,解压之后引入对应的css和js即可使用