`
Fangrn
  • 浏览: 818095 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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
分享到:
评论

相关推荐

    extjs-OA extjs-oa

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

    extjs-620-docs.zip

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

    extjs extjs-basex.js

    extjs-basex.js extjs-basex.js extjs-basex.js

    extjs-620-docs.rar完全离线版

    此"extjs-620-docs.rar"压缩包包含了该版本的完全离线版API文档,旨在解决在没有网络连接或网络环境不稳定时,开发者仍然可以便捷地查阅和学习ExtJS 6.2.0的相关知识。 API 文档是任何开发者的重要工具,特别是对于...

    extjs-4.1.1.zip

    在"extjs-4.1.1.zip"这个压缩包中,包含了ExtJS框架的4.1.1版本,这是一个成熟的版本,具有丰富的功能和优化的性能。 ExtJS的核心特性包括组件化设计、可定制的布局管理、强大的数据绑定机制以及一系列预设的UI组件...

    extjs-v7.0-cmd

    extjs-cmd 脚手架安装包2 extjs-cmd 脚手架安装包3 extjs-cmd 脚手架安装包4

    extjs-theme-bootstrap

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

    extjs-4.1.1 ExtJs所有文档及库文件

    extjs-4.1.1 ExtJs所有文档及库文件,在官网下的,这个版本很好,放在这方便大家下载!

    extJs-5.0.1-gpl(part1)

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

    extjs-core 3.0 beta版

    extjs-core 3.0 beta版extjs-core 3.0 beta版SDK extjs-core 3.0 beta版extjs-core 3.0 beta版

    extjs-653-docs.zip

    extjs-6.5.3离线API文档,是学习和开发的必要工具。希望有所帮助!

    Extjs--DWR做的动态树

    你可以使用`dwr.util`对象来异步调用服务器端方法,并在回调函数中处理返回的数据。 4. **数据交互**:当用户操作树(例如点击展开节点)时,触发相应的事件监听器。监听器通过DWR调用服务器端方法获取或更新节点...

    extjs-4.0.2框架

    ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架。功能丰富,无人能出其右。无论是界面之美,还是功能之强,ext的表格控件都高居榜首。单选行,多选行,高亮显示选中的行,推拽改变列...

    ExtJS-4.2.6-src-926个类源码

    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

    extjs-7.0.0-docs, EXT 7.0.0 官方离线文档包, 希望可以助力于您

    extjs-660-docs

    extjs-660-docs,EXT官方离线文档包, 希望可以且助力于您

    extjs-theme-bootstrap-master.zip

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

    extjs-4.1.1官方免费版

    extjs-4.1.1为extjs官方免费版,解压之后引入对应的css和js即可使用

Global site tag (gtag.js) - Google Analytics