`

我对DataTables的理解,以及小案例

 
阅读更多
优点:开源(选型最重要的一点),API方法扩展比较简单,源码写的非常优美,以至于比较难看懂,需要不断调试。

缺点:功能与datagrid或者ligerui的grid等比较起来缺少很多,不过这些都可以自己扩展,需要费比较大的精力。

下面是我的一个小小案例,里面有些方法是我自己额外加的,大家可以自行删除掉,不然会报错。 本人不太喜欢通过for循环去展现表单,一切都是ajax,劲量减少html的编写,不然项目参与人多了后代码就会非常乱。JavaScript可以封装,尽量让开发人员少些代码。
DatatableHelper这个封装已经在之前的博客上贡献出来了。

关于columns中的多余属性:dataType: "dict",  dataTypeValue: 'common.is'是传递到后台进行数据转换的,需要自己改一下源码,让后台把值转换好后传回前端展现。

比如日期格式的换砖,bool值的转换,i18n的转换和数据字典的转换。

var TableDatatablesAjax = function () {
    var grid;
    var handleRecords = function () {
        grid = new DatatableHelper();
        var gridSize = Public.setGrid();
        grid.init({
            src: $("#datatable_ajax"),
            onSuccess: function (grid, response) {

            },
            onError: function (grid) {
            },
            onDataLoad: function(grid) {
                TableDatatablesAjax.getDatatableHelper().getDataTable().row(':eq(0)').select();
            },
            loadingMessage: 'Loading...',
            dataTable: {
                "scrollY": gridSize.h - 55,
                "scrollX": true,
                dom: 'Bfrtip',
                columns: [{
                    data: "id",
                    title: "编号",
                    width: 40,
                    fixed: true,
                    align: "center"
                },{
                    data: "username",
                    title: "登陆账号",
                    width: 100,
                    align: "left"
                },{
                    data: "name",
                    title: "姓名",
                    defaultContent: "",
                    width: 80,
                    align: "left"
                },{
                    data: "email",
                    title: "邮箱",
                    defaultContent: "",
                    width: 120,
                    align: "left"
                },{
                    data: "mobilePhoneNumber",
                    title: "手机号",
                    defaultContent: "",
                    width: 120,
                    align: "left"
                },{
                    data: "createDate",
                    title: "创建时间",
                    defaultContent: "",
                    width: 120,
                    align: "left",
                    dataType: 'format', dataTypeValue:'yyyy-MM-dd'
                },{
                    data: "status",
                    title: "账户状态",
                    width: 120,
                    align: "left",
                    dataType: "i18n",
                    dataTypeValue: "UserStatus"
                },{
                    data: "admin",
                    title: "管理员",
                    width: 80,
                    align: "left",
                    dataType: "dict",
                    dataTypeValue: 'common.is'
                }],
                "bStateSave": true,
                "ajax": {
                    "url": location.href,
                },
                buttons: [
                    'selectAll',
                    'selectNone'
                ],
                "order": [
                    [1, "asc"]
                ]
            }
        });

        // handle group actionsubmit button click
        grid.getTableWrapper().on('click', '.table-group-action-submit', function (e) {
            e.preventDefault();
            var action = $(".table-group-action-input", grid.getTableWrapper());
            if (action.val() != "" && grid.getSelectedRowsCount() > 0) {
                grid.setAjaxParam("customActionType", "group_action");
                grid.setAjaxParam("customActionName", action.val());
                grid.setAjaxParam("id", grid.getSelectedRows());
                grid.getDataTable().ajax.reload();
                grid.clearAjaxParams();
            } else if (action.val() == "") {
                App.alert({
                    type: 'danger',
                    icon: 'warning',
                    message: 'Please select an action',
                    container: grid.getTableWrapper(),
                    place: 'prepend'
                });
            } else if (grid.getSelectedRowsCount() === 0) {
                App.alert({
                    type: 'danger',
                    icon: 'warning',
                    message: 'No record selected',
                    container: grid.getTableWrapper(),
                    place: 'prepend'
                });
            }
        });

        //grid.setAjaxParam("customActionType", "group_action");
        //grid.getDataTable().ajax.reload();
        //grid.clearAjaxParams();
    }

    return {
        init: function () {
            handleRecords();
        },
        getDatatableHelper: function(){
            return grid;
        }
    };
}();
jQuery(document).ready(function() {
    TableDatatablesAjax.init();
    SetUI();
});


HTML代码
<div class="table-container">
     <table class="table table-striped table-bordered table-hover table-checkable dataTable no-footer" id="datatable_ajax">
     </table>
</div>


截图:



  • 大小: 42.3 KB
分享到:
评论

相关推荐

    jquery-dataTables简单实例

    在这个实例中,我们将深入理解如何使用jQuery DataTables创建简单但实用的数据展示。 1. **基本初始化** 首先,确保在页面中引入jQuery库和DataTables的CSS及JS文件。这些文件可以从DataTables官方网站下载或通过...

    angular-datatables:使用角度指令的DataTables(需要维护器)

    在`angular-datatables-master`这个压缩包中,包含了项目的源码、示例、配置文件等,你可以下载并研究其结构,以便更好地理解和应用Angular Datatables到自己的项目中。通过深入学习和实践,你将能够充分利用这个...

    JQuery综合案例

    每个案例都提供了实践和学习jQuery的机会,通过这些实例,开发者可以深入理解jQuery的核心概念,提高代码效率,并掌握创建互动性强、用户体验良好的网页应用技能。同时,这些案例也鼓励开发者探索和研究jQuery的扩展...

    dateSort:DataTables的日期排序器

    在这个特定的案例中,dateSort解决了在客户端对日期数据进行有效排序的问题,尤其适用于那些需要根据特定日期格式进行操作的场景。 【描述】提到dateSort是响应非常特定的日期格式要求,并且强调了它的可修改性。这...

    spring data jpa 案例

    下面将详细阐述Spring Data JPA的核心概念、功能以及案例中可能涉及的知识点。 1. **Spring Data JPA的基本概念** - **JPA(Java Persistence API)**:是Java平台上的一个标准,用于管理关系数据库中的对象。 - ...

    Visual C#.NET数据库开发经典案例解析

    《Visual C#.NET数据库开发经典案例解析》这本书主要聚焦于使用C#编程语言与.NET框架进行数据库应用开发的实践技巧和深入理解。在C#.NET的环境下,数据库开发是构建现代应用程序的重要组成部分,尤其对于企业级应用...

    jquery经典案例

    《jQuery经典案例与深入理解》 jQuery,作为一款强大的JavaScript库,自2006年发布以来,就因其简洁易用的API和丰富的功能而深受开发者喜爱。它极大地简化了DOM操作、事件处理、动画效果和Ajax交互,使得前端开发...

    男孩的天职datatable视频

    【文件名称解析】:“男孩的天职datatables入门实战语音视频教程”表明这个压缩包中的内容是一个初级水平的教程,包含实战案例,并且有语音讲解,有助于学习者更好地理解和实践。 DataTable作为一款强大的数据管理...

    50个jquery案例

    12. 表格排序:例如DataTables插件,能对表格数据进行排序、搜索和分页。 五、jQuery与DOM操作 13. 元素遍历:.each()方法用于遍历集合,实现批量操作。 14. 属性操作:.attr()和.removeAttr()用于设置或移除元素...

    mui-drip-table-demo3:使用onRowsDelete选项的示例

    为了更好地理解这个示例,我们可以详细地探讨以下几点: 1. **数据绑定**:在`mui-drip-table`中,你需要预先定义好数据源,并将其绑定到表格组件。这些数据通常是一个JSON对象数组,每个对象代表表格的一行。 2. ...

    Jquery dataTable后台获取数据示例

    1. **引入依赖**: 首先确保项目中已经包含了jQuery、DataTables以及对应的CSS和JS文件,如果使用Struts2,还需要引入Struts2-jQuery插件。 2. **HTML布局**: 创建一个基本的HTML表格,并为其附加DataTables初始化...

    jQuery json带分页的动态数据表格代码.zip

    这个"jQuery datatables小实例demo"是学习如何使用jQuery和DataTables创建动态、交互式表格的好起点。通过理解这些概念,开发者可以创建出更复杂、功能更丰富的数据展示解决方案。对于网页开发人员来说,掌握这些...

    jQuery经典案例

    本篇文章将深入探讨jQuery中的经典案例,帮助读者更好地理解和运用这一技术。 一、DOM操作 1. 选择器:jQuery的选择器是其最强大的特性之一,它可以模拟CSS选择器,如`$("#id")`选取ID为"id"的元素,`$(".class")`...

    exchange-traded-fund:一个实现WebAPI、MVC、TDD、Castle Windsor、Datatables和Highcharts的简单项目

    这个项目集成了WebAPI、MVC(Model-View-Controller)、TDD(Test-Driven Development)、Castle Windsor(依赖注入容器)、Datatables(数据表格插件)以及Highcharts(图表库),以提供高效、可测试和用户友好的...

    瀑布流+lightbox+infinite_scroll无限加载分页+php+mysql

    在这个案例中,PHP被用来连接和查询MySQL数据库,获取图片信息,然后把这些信息转化为前端可以理解的格式。"conn.php"文件很可能是用来建立数据库连接的,确保了后端与数据库之间的通信。 MySQL是关系型数据库管理...

    Bootstrap表格控件的使用,与JAVA后台数据连接,可自动翻页

    Bootstrap表格控件是一种高效、美观的...开发者需要理解前后端的数据交互流程,熟悉Bootstrap的`DataTables`插件以及JAVA后端的数据处理。这样的实现方式不仅提高了网页的交互性,也提升了数据展示的效率和用户体验。

    ACCP 5.0 S2 酒店管理系统(一)

    通过学习和实践这个项目,开发者可以提升自己的.NET开发技能,同时对酒店行业的业务流程有深入理解,为今后从事相关行业的工作打下坚实基础。通过逐步分析和实现各个模块,学习者将能够综合运用所学知识,提高实际...

    jquery固定表头出现4个导航条

    在本案例中,"jquery固定表头出现4个导航条"可能指的是在长表格中,不仅有横向的表头需要固定,还有纵向的分页导航条,以及可能的上下左右四个方向的滚动条。 首先,让我们详细了解如何使用`jQuery`实现固定表头的...

    Linq之旅2

    此外,LINQ支持多种数据源,包括SQL数据库、ADO.NET DataTables、XML文档以及自定义的数据结构。在与数据库交互时,LINQ to SQL或Entity Framework等技术可以帮助我们无缝地将LINQ查询转换为SQL语句,从而简化数据库...

    javascript+jquery书的例子源码第2章

    7. **插件扩展**:jQuery生态系统中有大量插件,它们扩展了jQuery的功能,例如,用于图像轮播的`owl.carousel`,或者用于表格排序的`datatables`。 通过学习这些基础知识,开发者可以快速上手jQuery,创建交互丰富...

Global site tag (gtag.js) - Google Analytics