dataTablas Ajax分頁 ThinkPHP

前端代碼,php的有空再整理完髮出來

研究了2天弄出來,苦逼

<div class="row">
    <div class="col-xs-12">
        <div class="table-responsive">
            <table id="sample-table-2" class="table table-striped table-bordered table-hover">
                <label>
                    <input type="text" class="form-control fuzzy-search" placeholder="搜索">
                </label>
                <button type="submit" class="dataTable-sub">搜索</button>
                <thead>
                    <tr>
                        <th class="center">
                            <label>
                                <input type="checkbox" class="ace" />
                                <span class="lbl"></span>
                            </label>
                        </th>
                        <th>路由</th>
                        <th>在線人數</th>
                        <th>訂單</th>
                    </tr>
                </thead>
                <tbody>
                </tbody>
            </table>
        </div>
    </div>
</div>
<script type="text/javascript">
    $(function () {
        //提示信息
        var lang = {
            "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": "末頁",
                "sJump": "跳轉"
            },
            "oAria": {
                "sSortAscending": ": 以升序排列此列",
                "sSortDescending": ": 以降序排列此列"
            }
        };
        //初始化表格
        var table = $("#sample-table-2").dataTable({
            language:lang,  //提示信息
            autoWidth: false,  //禁用自動調整列寬
            //stripeClasses: ["odd", "even"],  //爲奇偶行加上樣式,兼容不支持CSS僞類的場合
            processing: true,  //隱藏加載提示,自行處理
            serverSide: true,  //啓用服務器端分頁
            searching: false,  //禁用原生搜索
            orderMulti: false,  //啓用多列排序
            //order: [],  //取消默認排序查詢,否則複選框一列會出現小箭頭
            renderer: "bootstrap",  //渲染樣式:Bootstrap和jquery-ui
            pagingType: "simple_numbers",  //分頁樣式:simple,simple_numbers,full,full_numbers
            columnDefs: [
            { "orderable": false, "targets": [ 0,3] }
            ],
            order: [
            [ 2, 'desc' ]
            ],
            //option顯示數量
            "aLengthMenu": [[20, 50, 100, 500, -1], [20, 50, 100, 500, "所有"]],
            "iDisplayLength": 20,   //默認顯示20條
            /*columnDefs: [{
                "targets": 'nosort',  //列的樣式名
                "orderable": false    //包含上樣式名‘nosort’的禁止排序
            }],*/
            ajax: function (data, callback, settings) {
                //封裝請求參數
                var param = userManage.getQueryCondition(data);
                /*param.limit = data.length;//頁面顯示記錄條數,在頁面顯示每頁顯示多少項的時候
                param.start = data.start;//開始的記錄序號
                param.page = (data.start / data.length)+1;//當前頁碼*/
                console.log(param);
                //ajax請求數據
                $.ajax({
                    type: "GET",
                    url: "{:U('ApMain/getData')}",
                    cache: false,  //禁用緩存
                    data: param,  //傳入組裝的參數
                    dataType: "json",
                    success: function (result) {
                        console.log(result);
                        //setTimeout僅爲測試延遲效果
                        setTimeout(function () {
                            //封裝返回數據
                            var returnData = {};
                            returnData.draw = data.draw;//這裏直接自行返回了draw計數器,應該由後臺返回
                            returnData.recordsTotal = result.total;//返回數據全部記錄
                            returnData.recordsFiltered = result.total;//後臺不實現過濾功能,每次查詢均視作全部結果
                            returnData.data = result.data;//返回的數據列表
                            console.log(returnData);
                            //調用DataTables提供的callback方法,代表數據已封裝完成並傳回DataTables進行渲染
                            //此時的數據需確保正確無誤,異常判斷應在執行此回調前自行處理完畢
                            callback(returnData);
                        }, 200);
                    }
                });
            },
            //列表表頭字段
            columns: [{ 
                "data": "id" ,
                render: function(data, type, full){
                    return "<label><input type='checkbox' class='ace' box='checkbox' value='"+full.id+"' /><span class='lbl'></span></label>";
                }
            },{ 
                "data": "gw_id",
                render: function(data, type, full){
                    var str = "{:U('ApMain/detail', array('id'=>'full_id'))}";
                    var url = str.replace('full_id', full.id);
                    var gw = full.gw_id;
                    if(full.comment) {
                        return "<a href="+url+">"+gw.substr(-6, 6)+"("+full.comment+")</a>";
                    } else{
                        return "<a href="+url+">"+gw.substr(-6, 6)+"</a>";
                    }


                } 
            },
            { "data": "onuser" },
            { "data": "gw_id" ,
                render: function(data, type, full){
                    var str,url,full_gw;
                    str = "{:U('控制器/模板', array('gw'=>'full_gw'))}";
                    url = str.replace('full_gw', full.gw_id);
                    return "<a href="+url+">查看</a>";
                }
            }
            ]
        }).api();
        //此處需調用api()方法,否則返回的是JQuery對象而不是DataTables的API對象
        //點擊搜索
        $('.dataTable-sub').click(function(){  
            table.draw();
        });  
        $('table th input:checkbox').on('click' , function(){
            var that = this;
            $(this).closest('table').find('tr > td:first-child input:checkbox')
            .each(function(){
                this.checked = that.checked;
                $(this).closest('tr').toggleClass('selected');
            });
        });
    });
    //參數處理
    var userManage = {
        currentItem : null,
        getQueryCondition : function(data) {
            var param = {};
            //組裝排序參數
            if (data.order&&data.order.length&&data.order[0]) {
                switch (data.order[0].column) {
                    case 1:
                    param.order = "comment";
                    break;
                    case 2:
                    param.order = "onuser";
                    break;
                    default:
                    param.order = "onuser";
                    break;
                }
                param.sort = data.order[0].dir;
            }
            //查詢參數
            param.fuzzy = $(".fuzzy-search").val();
            //組裝分頁參數
            param.start = data.start;
            param.length = data.length;
            return param;
        }
    }
</script>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章