`

jQuery EasyUI Datagrid组件的完整的基础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>

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

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

 

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

分享到:
评论

相关推荐

    easyui datagrid 数据导出到Excel

    在IT行业中,EasyUI Datagrid是一款基于jQuery的前端数据展示组件,它提供了丰富的表格功能,如排序、分页、过滤等。在实际工作中,我们经常需要将这些展示的数据导出到Excel文件,以便进行进一步的分析或存储。下面...

    jquery easyui datagrid 教程

    jQuery EasyUI Datagrid 是一个基于 jQuery 和 EasyUI 框架的数据网格组件,它提供了丰富的数据展示和操作功能,常用于构建数据密集型的Web应用。这个教程将深入讲解其核心概念、用法以及常见应用。 一、jQuery ...

    jQueryEasyUI 1.1完整源代码

    **jQueryEasyUI 1.1 完整源代码详解** jQueryEasyUI 是一款基于 jQuery 的前端框架,它为开发者提供了一系列轻量级、易于使用的组件,用于快速构建用户界面。这个1.1版本包含了完整的源代码,允许开发者深入理解其...

    jQuery EasyUI的api

    - **EasyUI 组件**: EasyUI 将jQuery的功能进一步扩展,提供了如`datagrid`(数据网格)、`panel`(面板)、`dialog`(对话框)等丰富的UI组件。 2. **组件的使用**: - **初始化组件**: 使用`$(selector)....

    easyui datagrid 导出到excel

    在IT领域,EasyUI Datagrid是一款基于jQuery的前端数据展示组件,它提供了丰富的表格功能,如排序、分页、过滤等。"EasyUI Datagrid 导出到Excel"这一主题涉及的是如何将EasyUI Datagrid中的数据显示在Excel表格中,...

    jQuery easyui 全套文件

    jQuery EasyUI 是一个基于 jQuery 的前端开发框架,它简化了网页界面的构建,提供了一...这个压缩包中的所有文件,包括 jQuery 库和 EasyUI 组件,都为开发者提供了一个完整的开发环境,使得快速上手和应用变得简单。

    jQuery EasyUI 1.3.3 源码

    在EasyUI中,jQuery被用来作为基础,为组件的创建和交互提供了便利。 1. **组件化设计**:EasyUI 的组件设计遵循模块化原则,每个组件都有独立的实现和配置选项,如`datagrid`用于展示数据表格,`dialog`用于弹出...

    jQueryEasyUI从零开始学源码part1

    本教程“jQueryEasyUI从零开始学源码part1”旨在帮助初学者深入理解jQuery EasyUI的工作原理,通过源码分析来提升开发技能。 首先,我们需要了解jQuery EasyUI的基础概念。jQuery是一个轻量级的JavaScript库,简化...

    jquery easyui及教程

    这个文档可以帮助开发者理解 jQuery 的基础操作,如选择器、事件处理、DOM 操作等。 `jquery+easyui_api培训文档.doc` 是一份培训文档,可能包含了使用 jQuery EasyUI 进行开发的实践指导和示例代码,对于初学者来...

    jqueryEasyUI

    2. 创建 DOM 结构:在 HTML 中,为每个要使用的组件添加相应的标记,如 `&lt;div class="datagrid"&gt;` 用于创建数据网格。 3. 初始化组件:通过 JavaScript 代码,对这些标记进行初始化,赋予它们 jQuery EasyUI 组件的...

    jquery EasyUI 1.4.3奇葩案例代码

    - **jQuery基础**:EasyUI是建立在jQuery库之上的,因此理解jQuery的基本选择器、事件和方法是必不可少的。 - **组件化**:EasyUI将常见的UI元素封装为组件,如`datagrid`(数据网格)、`dialog`(对话框)和`form`...

    jQuery EasyUI仿Extjs漂亮界面实例演示

    5. **布局管理**:在实例演示中,会展示如何使用EasyUI的布局组件创建复杂的页面结构,如网格布局、边界布局、表格布局等,有效地组织和展示内容。 6. **事件处理**:EasyUI组件有丰富的事件系统,可以通过监听和...

    jQuery EasyUI jquery-easyui-1.5.5.6

    jQuery EasyUI 是一个基于 jQuery 的前端框架,它提供了一系列易于使用的组件,帮助开发者快速构建用户界面。这个压缩包“jquery-easyui-1.5.5.6”包含了该框架的1.5.5.5版本,这是一份重要的更新,可能包含了一些...

    Jquery easyUI 离线包

    - JQuery EasyUI是建立在JQuery基础之上的,JQuery是一个强大的JavaScript库,用于简化DOM操作、事件处理和动画制作。 - EasyUI提供了一套易于使用的UI组件,如表格、表单、对话框、菜单、树形结构、面板等,这些...

    jquery easyui 模板

    它包括窗口(window)、表格(datagrid)、面板(panel)、下拉框(combobox)、树形结构(tree)等多种组件,极大地提高了开发效率。EasyUI 的组件具有良好的兼容性和可配置性,可以根据项目需求进行定制。 ### 3....

    jquery easyui 1.3.3 为混淆 源码 sourcecode

    1. **jQuery集成**:EasyUI是基于jQuery构建的,所以首先会导入jQuery库,然后在其基础上扩展各种UI组件。 2. **核心函数和API**:这是EasyUI的核心部分,包括数据处理、事件处理、DOM操作等基础功能。这些API允许...

    jQuery EasyUI 1.4

    jQuery 提供了简便的 DOM 操作、事件处理以及动画效果,而 EasyUI 在此基础上构建了更高级的组件。 jQuery EasyUI 的组件系统是其强大之处。例如,`datagrid` 是一个常见的表格组件,它可以轻松实现数据加载、排序...

    jquery-easyui-1.2.3实例参考

    "jquery-1.4.4.min.js"是jQuery库的核心文件,它是EasyUI的基础,负责处理DOM操作、事件处理和动画效果。EasyUI的大部分功能都是在jQuery的基础上实现的。 3. **EasyLoader** "easyloader.js"是jQuery EasyUI的...

    jQuery EasyUI版API

    jQuery EasyUI是一个基于jQuery的前端框架,它提供了一系列的组件,简化了网页界面的开发,使得开发者能够快速构建用户友好的交互式应用。这个API帮助文档涵盖了jQuery EasyUI的使用方法和功能,对于理解并熟练运用...

    Jqueryeasyui文档

    jQuery EasyUI 将这些基本功能进一步封装,提供了诸如表格(datagrid)、对话框(dialog)、下拉框(combobox)等组件,使得页面布局和交互变得更加简单。 1. **表格(datagrid)**:datagrid 是一个强大的数据展示...

Global site tag (gtag.js) - Google Analytics