首页 > 语言 > JavaScript > 正文

jQuery EasyUI框架中的Datagrid数据表格组件结构详解

2024-05-06 14:56:32
字体:
来源:转载
供稿:网友

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

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

<!-- datagrid的最外层容器,可以使用$(target).datagrid('getPanel')或者$.data(target,'datagrid').panel得到这个DOM对象,这个DOM上其实承载了panel组件-->   <div class="panel datagrid">     <!-- datagrid的标题区域容器,对应于panel组件的header部分,可以使用$(target).datagrid('getPanel').panel('header')得到这个DOM对象-->     <div class="panel-header">       <div class="panel-title"></div>       <div class="panel-tool"></div>     </div>     <!-- datagrid的主体区域容器,对应于panel组件的body部分,可以使用$(target).datagrid('getPanel').panel('body')得到这个DOM对象-->     <div class="datagrid-wrap panel-body">     <!--工具栏-->     <div class="datagrid-toolbar"></div>       <!-- datagrid视图部分的容器,这是datagrid组件DOM结构的核心,其基础视图结构跟datagrid的view属性无任何关系。-->       <!-- 对应dc.view -->       <div class="datagrid-view">         <!-- div.datagrid-view1负责展示冻结列部分(包含行号或者frozenColumns)的数据-->         <!-- 对应dc.view1 -->         <div class="datagrid-view1">           <!--列标题部分-->           <div class="datagrid-header">             <!-- 对应dc.header1 -->             <div class="datagrid-header-inner">               <!--样式里有htable关键字,h代表header的意思-->               <table class="datagrid-htable">                 <tbody>                   <tr class="datagrid-header-row"></tr>                 </tbody>               </table>             </div>           </div>           <!--列数据部分-->           <div class="datagrid-body">             <!-- 对应dc.body1 -->             <div class="datagrid-body-inner">               <!--frozenRows部分(有数据才会有这个table,故不属于基础DOM结构),固定行是1.3.2版本之后才加的功能,注意datagrid-btable-frozen关键样式,btable代码body table的意思-->               <table class="datagrid-btable datagrid-btable-frozen"></table>               <!--普通rows部分(有数据才会有这个table,故不属于基础DOM结构)-->               <table class="datagird-btable"></table>             </div>           </div>           <!--footer部分-->           <div class="datagrid-footer">             <!-- 对应dc.footer1 -->             <div class="datagrid-footer-inner">               <!--ftable代表footer table的意思-->               <table class="datagrid-ftable"></table>             </div>           </div>         </div>         <!-- div.datagrid-view2负责展示非冻结列部分的数据,大家注意到冻结列和普通列视图是分开的,也就是说冻结列和普通列是在不同表格中展示的,这样会产生一个问题,那就是两个表格行高之间的同步问题。-->         <!-- 对应dc.view2 -->         <div class="datagrid-view2">           <!--列标题部分-->           <div class="datagrid-header">             <!-- 对应dc.header2 -->             <div class="datagrid-header-inner">               <table class="datagrid-htable">                 <tbody>                   <tr class="datagrid-header-row"></tr>                 </tbody>               </table>             </div>           </div>           <!--列数据部分,注意这里并无datagrid-body-inner这个子元素,而冻结列对应的body却是有的,这个是细微区别-->           <!-- 对应dc.body2 -->           <div class="datagrid-body">             <!--frozenRows部分有数据才会有这个table,故不属于基础DOM结构,固定行是1.3.2版本之后才加的功能,-->             <table class="datagrid-btable datagrid-btable-frozen"></table>             <table class="datagrid-btable"></table>           </div>           <!--footer部分-->           <div class="datagrid-footer">             <!-- 对应dc.footer2 -->             <div class="datagrid-footer-inner">               <table class="datagrid-ftable"></table>             </div>           </div>         </div>       </div>       <!--分页部分-->       <div class="datagrid-pager pagination"></div>     </div>   </div>            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选