Datatables 定制化配置方法以及对常用操作的二次封装

本文分享了使用Datatables作为数据展示和操作的实践经验,包括基础的HTML和JS配置,以及如何处理复杂功能如自定义编辑、行操作、状态保存和AJAX提交等。
摘要由CSDN通过智能技术生成

Datatables功能强大,但是配置稍显复杂。先后在遇到两个使用Datatables作为表格数据展示与操作的项目,总结出一些经验和方法,分享给大家。

最常见的数据展示table

样例
该table只负责数据的展示与删除等较简单的功能,不涉及数据的编辑,配置也比较简单。

HTML代码

<table id="example" class="display" cellspacing="0" width="100%">
    <thead>
        <tr>
            <th>ID</th>
            <th>来源</th>
            <th>操作用户</th>
            <th>级别</th>
            <th>发生时间</th>
            <th>操作</th>                     
        </tr>
    </thead>
    <tfoot>
        <tr>
            <th>ID</th>
            <th>来源</th>
            <th>操作用户</th>
            <th>级别</th>
            <th>发生时间</th>
            <th>操作</th>
            </tr>
        </tfoot>
    </table>

HTML页面只做最基础的定义操作,其他配置都在js中进行设置。

JS代码

var DatatableTest = {
    dt :null,
    runDataTables : function() {
   
        //DataTablePaging为自定义Datatable初始化方式类,getAjaxPagingOptions方法返回带Ajax和分页的初始化结果
        var options = DataTablePaging.getAjaxPagingOptions({
            ajaxUrl:'url',
            order : [5,'desc'],
            colums:[ 
                {data : "eventId",name:"event_id"}, //data对应Pojo类字段,name对应数据库字段
                {data : "source",name:"source"}, 
                {data : "account",name:"account"}, 
                {data : "level",name:"level"}, 
                {data : "createTime",name:"create_time"},
            ],
            //单独设置列内容,此处为删除操作
            columsdefs:[ {
                targets : [ 6 ], 
                data : "eventId", 
                render : function(value, type, data) {
    
                    return "<a href=\"javascript:DatatableTest.deleteEventDialog('"+ value +"')\"><span class=\"glyphicon glyphicon-remove\"></span></a>";
                }
            } ]
        });
        var dt = DatatableTest .dt = $('#example').DataTable(options); //此处完成Datatables初始化 
    },
}
DataTablePaging
ar DataTablePaging = {
    language : {
        zh_cn : {
            processing : "数据正在加载中...",
            search : "查询:",
            lengthMenu : "每页显示 _MENU_ 条记录",
            info : "从 _START_ 到 _END_ /共 _TOTAL_ 条记录",
            infoEmpty : "从 0 到  0  共 0  条记录",
            infoFiltered : "(从 _MAX_ 条数据中检索)",
            infoPostFix : "",
            thousands : ",",
            loadingRecords : "数据加载中...",
            zeroRecords : "没有检索到数据",
            emptyTable : "没有数据",
            paginate : {
                first : "首页",
                previous : "前一页",
                next : "后一页",
                last : "尾页"
            },
            aria : {
                sortAscending : ": 升序",
                sortDescending : ": 降序"
            }
        }
    },
    /**
     * 获取ajax分页options设置
     */
    getAjaxPagingOptions : function(settings) {
        var options = {
            ajax : {
                url : settings.ajaxUrl,
                type : "post"
            },
            serverSide : true,
            destroy : true,
            processing : true,
            ordering : true,
            searching : false,
            paging : true,
            pagingType : "full_numbers",
            lengthMenu : [ 10, 20, 50, 100 ],
            pageLength : 20,
            order : settings.order,// [index,'asc|desc']
            language : DataTablePaging.language.zh_cn,
            columns : settings.colums,
            columnDefs : settings.columsdefs,
        };
        return options;
    },
    /**
     * 获取ajax不分页options设置
     */
    getOptions : function(settings) {
        var options = {
            ajax : {
                url : settings.ajaxUrl,
                type : "post"
            },
            serverSide : false,
            destroy : true,
            processing : true,
            ordering : true,
            searching : false,
            pagingType : "full_numbers",
            lengthMenu : [ 10, 20, 50, 100 ],
            pageLength : 20,
            language : DataTablePaging.language.zh_cn,
            columns : settings.colums,
            columnDefs : settings.columsdefs,
        };
        return options;
    },
    /**
     * 获取非ajax分页options设置
     */
    getNotAjaxPagingOptions : function(settings) {
        var options = {
            serverSide : false,
            destroy : 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值