先看效果:

代码如下:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>test</title>
  6. <script type="text/javascript">
  7. </script>
  8. <link rel="stylesheet" type="text/css" href="Lib/ExtJs/2_2/resources/css/ext-all.css" />
  9. <script type="text/javascript" src="Lib/ExtJs/2_2/adapter/ext/ext-base.js"></script>
  10. <script type="text/javascript" src="Lib/ExtJs/2_2/ext-all-debug.js"></script>
  11. <script type="text/javascript" src="Lib/ExtJs/2_2/source/locale/ext-lang-zh_CN.js"></script>
  12. <script type="text/javascript" src="Lib/ExtJs/plus/RowExpander.js"></script>
  13. <script type="text/javascript">
  14. Ext.onReady(function(){
  15. var testData=[
  16. ["lugreen","男",26,[["数学",100],["语文",150]]]
  17. ,["lisi","男",25,[["数学",100],["语文",150]]]
  18. ,["zhangsan","男",27,[["数学",120],["语文",158]]]
  19. ];
  20. //
  21. storeTest= new Ext.data.SimpleStore({
  22. fields: ["name","sex","age","grade"]
  23. ,data: testData
  24. });
  25. var expander = new Ext.grid.RowExpander({
  26. tpl : new Ext.XTemplate(
  27. '<div class="detailData">',
  28. '',
  29. '</div>'
  30. )
  31. });
  32. expander.on("expand",function(expander,r,body,rowIndex){
  33. //查找 grid
  34. window.testEle=body;
  35. //alert(body.id);
  36. if (Ext.DomQuery.select("div.x-panel-bwrap",body).length==0){
  37. //alert("a");
  38. var data=r.json[3];
  39. var store=new Ext.data.SimpleStore({
  40. fields: ["class","degrade"]
  41. ,data:data
  42. });
  43. var cm = new Ext.grid.ColumnModel([
  44. {header: "科目",dataIndex: 'class',width: 130,hideable:false,sortable:false,resizable:true}
  45. ,{header: "成绩",dataIndex: 'degrade',width: 130,hideable:false,sortable:false,resizable:true}
  46. ]);
  47. Ext.DomQuery.select("div.detailData")[0];
  48. var grid = new Ext.grid.GridPanel(
  49. {
  50. store:store,
  51. cm:cm,
  52. renderTo:Ext.DomQuery.select("div.detailData",body)[0],
  53. autoWidth:true,
  54. autoHeight:true
  55. }
  56. );
  57. }
  58. });
  59. //var sm=new Ext.grid.CheckboxSelectionModel({singleSelect:true});
  60. var cm = new Ext.grid.ColumnModel([
  61. expander
  62. ,{header: "姓名",dataIndex: 'name',width: 50,hideable:false,sortable:false}
  63. ,{header: "性别",dataIndex: 'sex',width: 130,hideable:false,sortable:false,resizable:true}
  64. ,{header: "年龄",dataIndex: 'age',width: 130,hideable:false,sortable:false,resizable:true}
  65. ]);
  66. var grid = new Ext.grid.GridPanel(
  67. {
  68. id:'testgrid',
  69. store:storeTest,
  70. cm:cm,
  71. renderTo:"grid1",
  72. width:780,
  73. autoHeight:false,
  74. height:300,
  75. listeners:{},
  76. plugins:[expander]
  77. }
  78. );
  79. });
  80. </script>
  81. <style type="text/css">
  82. #div2 h2 {
  83. font-weight:200;
  84. font-size:12px;
  85. }
  86. .c1 h2 {
  87. font-weight:200;
  88. }
  89. </style>
  90. </head>
  91. <body>
  92. <div id="grid1">
  93. </div>
  94. <div id="grid2">
  95. </div>
  96. </body>
  97. </html>

其中使用到的"RowExpander.js"为extjs官方示例中自带的。

实现这个嵌套表格要注意两点技巧:

1 提供给外层表格的dataStore的数据源以嵌套数组的形式表示细节区的数据,如下面的黑体所示。

  
  1. var testData=[
  2. ["lugreen","男",26,[["数学",100],["语文",150]]]
  3. ,["lisi","男",25,[["数学",100],["语文",150]]]
  4. ,["zhangsan","男",27,[["数学",120],["语文",158]]]
  5. ];

使用数组集中record对象的json属性来获取以细节区数据

var data=r.json[3];

2 在rowExpander的 expand事件中添加嵌套表格.

ExtJS中实现嵌套表格的更多相关文章

  1. Ext3.4-EXT之嵌套表格的实现

    其中使用到的"RowExpander.js"为extjs官方示例中自带的. 实现这个嵌套表格要注意两点技巧: 1 提供给外层表格的dataStore的数据源以嵌套数组的形式表示细节 ...

  2. C# 绘制PDF嵌套表格

    嵌套表格,即在一张表格中的特定单元格中再插入一个或者多个表格,使用嵌套表格的优点在于能够让内容的布局更加合理,同时也方便程序套用.下面的示例中,将介绍如何通过C#编程来演示如何插入嵌套表格到PDF文档 ...

  3. Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行

    本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...

  4. 跟我一起玩转FineUI之嵌套表格

    最近一直在研究FineUI(http://www.fineui.com/),那么什么是FineUI呢,FineUI是基于 ExtJS 的专业 ASP.NET 控件库.创建 No JavaScript, ...

  5. EXTJS中grid的数据特殊显示,不同窗口的数据传递

    //EXTJS中grid的数据特殊显示renderer : function(value, metaData, record, rowIndex, colIndex, store, view) { v ...

  6. 转: ExtJS中xtype一览

    转: ExtJS中xtype一览 基本组件: xtype Class 描述 button Ext.Button 按钮 splitbutton Ext.SplitButton 带下拉菜单的按钮 cycl ...

  7. 小细节--Extjs中,renderTo 和applyTo的区别

    说到web前端框架,extjs绝对算是非常优秀的一个. extjs中,两个方法很像,renderTo和applyTo,我在网上也搜了很多相关的内容,在这里举例为大家进行区分,欢迎大家交流指正. 主要区 ...

  8. 【JS中循环嵌套常见的六大经典例题+六大图形题,你知道哪几个?】

    首先,了解一下循环嵌套的特点:外层循环转一次,内层循环转一圈. 在上一篇随笔中详细介绍了JS中的分支结构和循环结构,我们来简单的回顾一下For循环结构: 1.for循环有三个表达式,分别为: ①定义循 ...

  9. kotlin中的嵌套类与内部类

    Java中的内部类和静态内部类在Java中内部类简言之就是在一个类的内部定义的另一个类.当然在如果这个内部类被static修饰符修饰,那就是一个静态内部类.关于内部类 和静态内部类除了修饰符的区别之外 ...

随机推荐

  1. Machine Learning系列--判别式模型与生成式模型

    监督学习的任务就是学习一个模型,应用这一模型,对给定的输入预测相应的输出.这个模型的一般形式为决策函数:$$ Y=f(X) $$或者条件概率分布:$$ P(Y|X) $$监督学习方法又可以分为生成方法 ...

  2. Linux shell中运行命令后加上字符“&”的作用(转)

    原文链接为:http://blog.sina.com.cn/s/blog_963453200102uya7.html & 放在启动参数后面表示设置此进程为后台进程 默认情况下,进程是前台进程, ...

  3. Mybatis的初步使用

    MyBatis 是当下最流行的持久层框架,也是ORM框架,本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google ...

  4. Nginx 原理篇

    前言 在学习 Nginx 之前,我们首先有必要搞清楚下面几个问题: 1. Web服务器是怎么工作的? 2. Apache 与 Nginx 有何异同? 3. Nginx 工作模式是怎样的? 下面就围绕这 ...

  5. python-unittest学习2--生成报告

    上个是小练习  ,这次将unittest模块化一下,也就是吧用例放在case目录下,start放在bin目录下面 -------------------start------------------- ...

  6. Java学习(一)Scanner报错java.util.NoSuchElementException

    我在一个方法A中使用了Scanner的 Scanner input=new Scanner(System.in),随后又将其关闭了,因为Eclipse里面你若不关闭,他会有一个warning:Reso ...

  7. Condition接口

    <Java并发编程艺术>读书笔记 Condition介绍 任意一个Java对象,都拥有一组监视器方法(定义在java.lang.Object中),主要包括wait().wait(long ...

  8. Spring MVC数据绑定(二)

    之前学习了SpringMVC数据绑定的基本知识和简单数据绑定以及POJO类型数据的绑定.接下来总结剩下的一些数据类型的绑定 1. 绑定包装POJO 所谓的包装POJO,就是在一个POJO中包含另一个简 ...

  9. html学习-js

    1.js介绍 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理.js能使 ...

  10. ORA-12537: TNS:connection closed错误处理过程

    https://blog.csdn.net/mchdba/article/details/50018571