Datatables 封装2

本文介绍了一种使用jQuery和DataTables插件定制复杂表格的方法,包括动态加载、分页、排序、搜索等功能,并展示了如何通过自定义列和AJAX数据源实现特定需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js

(function ($) {
    $.fn.systemTables = function (options) {
        var opts = $.extend({}, $.fn.systemTables.defaults, options);
        $(this).dataTable({
            bProcessing: true,
            bServerSide: true,
            bAutoWidth: false,//自动宽度
            bSort: false, //排序功能
            searching: false,
            bLengthChange: true,
            aLengthMenu: [10,20,30,40,50],
            language: {
                sLengthMenu: "每页显示 _MENU_ 条记录",
                sZeroRecords: "对不起,查询不到任何相关数据",
                sInfo: "当前显示 _START_ 到 _END_ 条,共 _TOTAL_ 条记录",
                sInfoEmtpy: "找不到相关数据",
                sInfoFiltered: "数据表中共为 _MAX_ 条记录",
                sProcessing: "正在加载中...",
                sSearch: "搜索",
                sInfoEmpty: "显示 0 至 0 共 0 项",
                oPaginate: { "sFirst": "第一页", "sPrevious": "上一页 ", "sNext": "下一页 ", "sLast": "末页 " }
            },
            paging: opts.paging,//是否分页
            sPaginationType: 'full_numbers',
            columns: opts.columns,
            columnDefs: opts.columnDefs,
            sAjaxSource: opts.url,
            fnServerData: opts.myAjax,
        });
    };
    //$.Reload = function () {      
    //    $.fn.DataTable().ajax.reload();
    //}
    $.fn.systemTables.defaults = {
        columns: [], //默认列
        columnDefs: [], //列格式
        paging: false,//是否分页
        url: '',  //地址
        dataParam: {},//参数
        successCallback: function (data) { },//查询完成回调函数    
        myAjax: function (sSource, aoData, fnCallback) {
        }
    };
})(jQuery);

 

页面加载 调用


        var columns = [
                          { data: "moduleId", title: "标识" },
                          { data: "moduleName", title: "功能名称" },
                          { data: "moduleUrl", title: "URL地址" },
                          { data: "moduleZdy", title: "是否可自定义" },
                          { data: "moduleId", title: "操作" }
        ];
        var columnDefs = [
                       {
                           //最后一列
                           targets: columns.length - 1,
                           render: function (data, type, row, meta) {
                               var edit = '<button class="btn btn-info btn-sm" onclick="openModuleEdit(' + '\'' + row.moduleName + '\',' + '\'' + row.moduleUrl + '\'' + ',' + '\'' + row.moduleId + '\'' + ',' + '\'' + row.moduleZdy + '\'' + ')">' + '<i class="fa fa-pencil"></i></button>';
                               var del = '<button class="btn btn-danger btn-sm"onclick="del(' + row.moduleId + ')">' + '<i class="fa fa-trash-o"></i></button>';
                               return edit + del;
                           }
                       }
        ];
        $(document).ready(function () {
            var size = $('#myTable_lengthl');
            $('#myTable').systemTables({
                columns: columns,
                url: '@Url.Action("ModuleTable", "SeniorManager")',
                columnDefs: columnDefs,
                paging: false,
                myAjax: function (sSource, aoData, fnCallback) {
                    $.ajax({
                        type: 'post',
                        url: sSource,
                        data: {},
                        dataType: 'json',
                        success: fnCallback
                    });
                }
            })
            $('#myTable').on('click', 'tr', function () {              
                $(this).toggleClass('selected');
                $(this).smartMenu(imageMenuData, {                  
                    name: "image"
                });               
            });
        })

 ////页面刷新重载
        function Page_reload() {
            $('#myTable').DataTable().ajax.reload();
        }

使用方法: 支持JAVA和PHP两种后台。 PHP:直接将WebRoot下的文件放到php服务器上直接运行即可,记得启用sqlite3。 JAVA:修改user-manage.js,将访问后台的url由"datasource.php"改为"datasource.jsp",然后将WebRoot下的文件放到tomcat下直接运行。也可使用Eclipse直接导入此项目文件。 简要说明: 使用DataTable默认的ajax交互功能,对传给后台和从后台获取的数据都有命名格式要求,这样一来耦合度较高,不利于后期扩展,不能直接适用于需要跟多种不同前端或其他业务交互的项目。本例子主要展示了自行封装请求参数和返回数据的用法,对后台的交互没有任何格式和命名限制。 基于Bootstrap 2.3.2,相关的其他插件包括图标控件FontAwesome、等待提示控件Spinjs(修改版)、弹窗控件lhgdialog(修改版) 主要展现: 封装请求参数(查询、排序、分页,不再需要data、dataFilter和dataSrc) 封装返回数据 自定义查询参数 服务器分页 自行控制和自定义遮罩效果 生成自定义效果的单元格(在线离线) 生成复选框单元格 响应复选框选择事件 生成操作按钮单元格 响应操作栏按钮点击事件 响应行点击事件 渲染回调事件(默认选中第一行) 分页栏增加跳页功能(直接修改了dataTables.bootstrap.js和dataTables.bootstrap.css) CSS实现单元格超长文字省略号显示 CSS实现单元格连续纯字母数字强制换行显示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值