ExtJS中实现嵌套表格

先看效果:

代码如下:

  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中实现嵌套表格

时间: 2024-11-05 11:31:52

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

bootstrap-面板中嵌套表格

1.运行效果如图所示 2.实现代码如下 <!DOCTYPE html> <html> <head>     <meta charset="utf-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <title>面板--面板中嵌套表格</title>     <!-- 最新版本的

iOS中表格(UITableView)嵌套表格的简单实现

iOS中表格(UITableView)嵌套表格的简单实现 首先说一下思路:我们在一个控制器里面定义2个tableview,一个作为被嵌套的rootTable,一个作为嵌套的表格tableView1,那我们要实现UITableViewDelegate,UITableViewDataSource,的代理的时候,该怎么区分呢?其实很简单,有两种方法,一个是给定义的2个tableview设置tag值,另一个是直接写出来tableView == rootTable时实现他得代理,否则就实现tableVie

Java 在Word中添加表格、嵌套表格

表格作为一种可视化交流模式及组织.整理数据的方法,在各种场合及文档中应用广泛.常见的表格可包含文字.图片等元素,我们操作表格时可以插入图片.嵌套表格.写入文字及格式化表格样式等.下面,将通过Java编程在Word文档中创建表格并实现格式化操作,包括设置字体.字号.字体颜色.字体粗细等,设置单元格对齐方式.单元格背景色.单元格合并/拆分.表格边框样式.插入图片等等. 使用工具:Free Spire.Doc for Java (免费版)Jar文件获取及导入:方法1:通过官网下载文件包.下载后,解压文

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

//EXTJS中grid的数据特殊显示renderer : function(value, metaData, record, rowIndex, colIndex, store, view) { var USED_AMOUNT_ = 0; for (var i = 0; i < matMonthPlanHisList.length; i++) { if(matMonthPlanHisList[i].MAT_NO_ == record.get('MAT_NO_')){ USED_AMOUNT_

ExtJS中layout的12种布局风格

原文地址: http://www.cnblogs.com/mingforyou/p/4119200.html ExtJS中layout的12种布局风格 extjs的容器组件都可以设置它的显示风格,它的有效值有 absolute, accordion, anchor, border, card, column, fit, form and table.  一共9种. 另外几种见:  http://www.sencha.com/deploy/dev/examples/layout-browser/l

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

说到web前端框架,extjs绝对算是非常优秀的一个. extjs中,两个方法很像,renderTo和applyTo,我在网上也搜了很多相关的内容,在这里举例为大家进行区分,欢迎大家交流指正. 主要区分内容:比较renderTo和applyTo在显示和渲染生成代码上的异同. 使用方法:使用嵌套的div层,分别用renderTo和applyTo方法进行渲染. js代码: <script type="text/javascript"> Ext.onReady(function

C# 绘制PDF嵌套表格

嵌套表格,即在一张表格中的特定单元格中再插入一个或者多个表格,使用嵌套表格的优点在于能够让内容的布局更加合理,同时也方便程序套用.下面的示例中,将介绍如何通过C#编程来演示如何插入嵌套表格到PDF文档.要点概括: 插入嵌套表格 插入文字到嵌套表格 插入图片到嵌套表格 使用工具 Spire.PDF 4.9.7 Visual Studio注:1.这里使用的版本为4.9.7,经测试,对于代码中涉及的PdfGridCellContentList类和PdfGridCellContent类仅在使用该版本或者

用Aspose.Words for .NET动态生成word文档中的数据表格

1.概述 最近项目中有一个这样的需求:导出word 文档,要求这个文档的格式不是固定的,用户可以随便的调整,导出内容中的数据表格列是动态的,例如要求导出姓名和性别,你就要导出这两列的数据,而且这个文档不是导出来之后再调整而是导出来后已经是调整过了的.看到这里,您也许马上想到用模板导出!而且.NET中自带有这个组件:Microsoft.Office.Interop.Word,暂且可以满足需求吧.但这个组件也是有局限性的,例如客户端必须装 office组件,而且编码复杂度高.最麻烦的需求是后面那个-

ExtJS中TreeGrid的用法

如果您是第一次使用ExtJS的TreeGrid的话,我相信总会有一些小麻烦的,下面就来说一说ExtJS中TreeGrid的使用. 本人使用的ExtJS版本为4.0.7,并且使用了MVC模式,如果不了解ExtJS的MVC模式的话我个觉得还是有必要去学学的, 学完后你肯定会喜欢上的. 其实在ExtJS中并没有TreeGrid这么一个类,这个说法是从EasyUI中借用过来的,ExtJS中的TreeGrid功能已经合在了Ext.tree.Panel中. TreeGrid显示出来大概是这个样子: 下面是这