`
zhpengfei0915
  • 浏览: 65500 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

jQuery EasyUI Datagrid组件的基础完整DOM结构

 
阅读更多
jQuery EasyUI Datagrid组件的基础完整DOM结构

标题可能有点长,什么叫“基础完整DOM结构”,这里“基础”的意思是指这个结构不依赖具体数据,不依赖Datagrid的view属性,只要存在 Datagrid实例就会存在这样的基础DOM结构;而“完整”的意思是指在冻结列,冻结行,标题,footer,分页这些功能块都存在时候的DOM结 构。

要搞清楚Datagrid的工作原理,这个DOM结构必须要烂熟于胸的,我们直接来看这个“基础完整DOM结构”是什么样子的:

  1. <!--datagrid的最外层容器,可以使用$(target).datagrid('getPanel')或者$.data(target,'datagrid').panel得到这个DOM对象,这个DOM上其实承载了panel组件-->
  2. <divclass="paneldatagrid">
  3. <!--datagrid的标题区域容器,对应于panel组件的header部分,可以使用$(target).datagrid('getPanel').panel('header')得到这个DOM对象-->
  4. <divclass="panel-header">
  5. <divclass="panel-title"></div>
  6. <divclass="panel-tool"></div>
  7. </div>
  8. <!--datagrid的主体区域容器,对应于panel组件的body部分,可以使用$(target).datagrid('getPanel').panel('body')得到这个DOM对象-->
  9. <divclass="datagrid-wrappanel-body">
  10. <!--datagrid视图部分的容器,这是datagrid组件DOM结构的核心,其基础视图结构跟datagrid的view属性无任何关系。-->
  11. <!--对应dc.view-->
  12. <divclass="datagrid-view">
  13. <!--div.datagrid-view1负责展示冻结列部分(包含行号或者frozenColumns)的数据-->
  14. <!--对应dc.view1-->
  15. <divclass="datagrid-view1">
  16. <!--列标题部分-->
  17. <divclass="datagrid-header">
  18. <!--对应dc.header1-->
  19. <divclass="datagrid-header-inner">
  20. <!--样式里有htable关键字,h代表header的意思-->
  21. <tableclass="datagrid-htable">
  22. <tbody>
  23. <trclass="datagrid-header-row"></tr>
  24. </tbody>
  25. </table>
  26. </div>
  27. </div>
  28. <!--列数据部分-->
  29. <divclass="datagrid-body">
  30. <!--对应dc.body1-->
  31. <divclass="datagrid-body-inner">
  32. <!--frozenRows部分,固定行是1.3.2版本之后才加的功能,注意datagrid-btable-frozen关键样式,btable代码bodytable的意思-->
  33. <tableclass="datagrid-btabledatagrid-btable-frozen"></table>
  34. <!--普通rows部分-->
  35. <tableclass="datagird-btable"></table>
  36. </div>
  37. </div>
  38. <!--footer部分-->
  39. <divclass="datagrid-tooter">
  40. <!--对应dc.footer1-->
  41. <divclass="datagrid-footer-inner">
  42. <!--ftable代表footertable的意思-->
  43. <tableclass="datagrid-ftable"></table>
  44. </div>
  45. </div>
  46. </div>
  47. <!--div.datagrid-view2负责展示非冻结列部分的数据,大家注意到冻结列和普通列视图是分开的,也就是说冻结列和普通列是在不同表格中展示的,这样会产生一个问题,那就是那个表格行高之间的同步问题。-->
  48. <!--对应dc.view2-->
  49. <divclass="datagrid-view2">
  50. <!--列标题部分-->
  51. <divclass="datagrid-header">
  52. <!--对应dc.header2-->
  53. <divclass="datagrid-header-inner">
  54. <tableclass="datagrid-htable">
  55. <tbody>
  56. <trclass="datagrid-header-row"></tr>
  57. </tbody>
  58. </table>
  59. </div>
  60. </div>
  61. <!--列数据部分,注意这里并无datagrid-body-inner这个子元素,而冻结列对应的body却是有的,这个是细微区别-->
  62. <!--对应dc.body2-->
  63. <divclass="datagrid-body">
  64. <!--frozenRows部分,固定行是1.3.2版本之后才加的功能,-->
  65. <tableclass="datagrid-btabledatagrid-btable-frozen"></table>
  66. <tableclass="datagrid-btable"></table>
  67. </div>
  68. <!--footer部分-->
  69. <divclass="datagrid-footer">
  70. <!--对应dc.footer2-->
  71. <divclass="datagrid-footer-inner">
  72. <tableclass="datagrid-ftable"></table>
  73. </div>
  74. </div>
  75. </div>
  76. </div>
  77. <!--分页部分-->
  78. <divclass="datagrid-pagerpagination"></div>
  79. </div>
  80. </div>

对于这个DOM结构,我在html代码里面已经做了简单说明,这里提一下绑定于Datagrid宿主table上的对象的dc属性,这个dc属性存储了对DOM结构里不同部分的引用,获取dc属性的方法:

  1. $.data(target,'datagrid').dc;

而dc属性跟DOM的对应关系,我也在html中做了详细注释,请大家自行查看,这些都是我们深入认识Datagrid组件的基础。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics