美文网首页
jquery dataTables详解

jquery dataTables详解

作者: ai_cuicui | 来源:发表于2018-08-24 12:10 被阅读0次

    datatables插件是一款基础jquery的表格插件,从官网下载最新版本的插件,在页面中使用相应的css和js文件。(官网:http://datatables.net/
    简单快速的使用datatables:
    需要注意的关键点:
    1.一列只可以传递一个参数,如果需要传递隐藏参数,可以添加隐藏列
    2.table里面必须有thead和tbody标签
    html:

    <!--多条件查询下拉框-->
    <div class="btn-group search_filter1" role="group">
        <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            <span class="search_keyword1" data-search_keyword="1">全部消息类型</span>
            <span class="caret"></span>
        </button>
        <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
            <li data-name=""><a style="cursor:pointer">全部消息类型</a></li>
            <li data-name=""><a style="cursor:pointer">设备离线</a></li>
            <li data-name=""><a style="cursor:pointer">设备操作</a></li>
        </ul>                    
    </div>
    <!--表格-->
    <table id="example">
        <thead>
            <tr>
                <th><label class="checkbox"><input name="select_all" type="checkbox"></label></th>
                <th>消息内容</th>
                <th>发生时间</th>
                <th>消息类型</th>
                <th>序列号</th>     <!--隐藏列-->
                <th>等级</th>     <!--隐藏列-->
            </tr>
        </thead>
     </table>
    

    js:

    $(document).ready(function() {
          var  table =  $('#example').DataTable({
                 dom: 'rt<"#table_footer"Bp>',
                 "bStateSave": false,
                "bFilter": true,   //是否启动过滤,搜索功能
                "sPaginationType": "full_numbers",
                "iDisplayLength": 10,
                "ajax": {
                    "url":"api/",
                    dataSrc: 'message'
                },
                "columns": [          //每一列只能传一个参数,可以添加隐藏列
                    {"data": null},
                    {"data": "event_info"},
                    {"data": "event_time"},
                    {"data": "event_type"},
                    {"data": "device"},
                    {"data": "event_level"}
                ],
                "language": {
                    "sProcessing": "处理中...",
                    "sLengthMenu": "显示 _MENU_ 项结果",
                    "sZeroRecords": "没有匹配结果",
                    "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项",
                    "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项",
                    "sInfoFiltered": "(由 _MAX_ 项结果过滤)",
                    "sInfoPostFix": "",
                    "sSearch": "搜索:",
                    "sUrl": "",
                    "sEmptyTable": "表中数据为空",
                    "sLoadingRecords": "载入中...",
                    "sInfoThousands": ",",
                    "oPaginate": {
                        "sFirst": "首页",
                        "sPrevious": "上页",
                        "sNext": "下页",
                        "sLast": "末页"
                    },
                    "oAria": {
                        "sSortAscending": ": 以升序排列此列",
                        "sSortDescending": ": 以降序排列此列"
                    }
                },
                rowCallback: function (row, data, dataIndex) {         //可以直接对每一行进行操作 
                    //时间截取----- 毫秒
                    var timeText = $(row).children('td').eq(2).text();
                    console.log(timeText.substring(0,19));
                    $(row).children('td').eq(2).text(timeText.substring(0,19));
                },
                columnDefs: [
                    {
                        //   指定第第一列
                        targets: [0],
                        searchable: false,
                        orderable: false,
                        width: '5%',
                        render: function (data, type, row, meta) {
                            var gen_html = '<label class="checkbox"><input name="select_single" type="checkbox"></label>';
                            return gen_html;
                        }
                    },
                    {
                        //   指定第第2列
                        targets: [1],
                        width: '55%',
                        render: function (data, type, row, meta) {
                            return '<i class="on"></i>' + data;
                        }
                    },
                    {
                        //   指定第第3列
                        targets: [2],
                        width: '20%'
                    },
                    {
                        //   指定第第4列
                        targets: [3],
                        width: '20%'
                    },
                    {
                        //   指定第第5列
                        className:"hide_column",    //添加class,使其隐藏
                        targets: [4]
    
                    },
                    {
                        //   指定第第6列
                        className:"hide_column",    //添加class,使其隐藏
                        targets: [5]
                    }
    
                ],
                "order" : [ [ 1, 'asc' ] ]       //第一列为复选框,不需要排序,禁止第一列排序
          })
    })
    //第一列复选框全选
     //全选
        var $selectAll = $('input[name=select_all]');
        var $selectSingle = $('input[name=select_single]');
        console.log($selectSingle);
        $selectAll.click(function () {
            console.log('全选');
            if ($selectAll.prop("checked") == true) {
                // 上面的复选框已被选中
                $(":checkbox[name='select_single']").prop("checked", true);
            } else {
                // 上面的复选框没被选中
                $(":checkbox[name='select_single']").prop("checked", false);
            }
        })
    //多条件查询(举例一个,bootstrap)
     //下拉框--- 消息类型
            $('.search_filter1 li').on('click', function(){
                $('.search_keyword1').text($(this).text());
                var content = $('.search_keyword1').text();
                if(content == "设备操作"){
                    table
                        .column(3)
                        .search("Action")    //数据库的字段
                        .draw();
                }else if(content == "设备离线"){
                    table
                        .column(3)
                        .search("Status")    //数据库的字段
                        .draw();
                }else if(content == "所有人变更"){
                    table
                        .column(3)
                        .search("Owner")    //数据库的字段
                        .draw();
                }else if(content != ""){
                    table
                        .column(3)    //搜索第几列
                        .search("")    //搜索内容
                        .draw()         //重绘表格
                }
            });
    
    

    我这个是自己写的多条件查询,所以没有事用datatable自带的搜索功能。

    相关文章

      网友评论

          本文标题:jquery dataTables详解

          本文链接:https://www.haomeiwen.com/subject/pujbiftx.html