1. 程式人生 > >datatables 配套bootstrap3樣式使用小結(1)

datatables 配套bootstrap3樣式使用小結(1)

earch 記錄 是否 管理 string local 大寫 加載 filter

今天介紹匯總一下datatables。

網址: www.datatables.net

公司CMS內容資訊站的後臺管理界面用了大量的table來管理數據,試用了之後,感覺挺不錯,推薦一下。

先上一個基本的效果圖.

技術分享

(圖片太寬了,換了另一個模板)

介紹一下這個demo的實現。

首先是引用 js+css。

js有4個,①jquery,②bootstrap3,③datatables的js,④datatables對應bootstrap樣式時用的。

為了說明問題,就不放bundle裏面了。

<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/bootstrap.js"></script>
<script src="~/Content/datatables/js/jquery.dataTables.js"></script>
<script src="~/Content/datatables/js/dataTables.bootstrap.js"></script>

然後是css。

有2個,①bootstrap3,②datatables對應bootstrap樣式(要用這個替換datatables默認的樣式,否則會出現右下角的分頁樣式margin很大的情況。)

<link href="~/Content/bootstrap.css" rel="stylesheet" />
<link href="~/Content/datatables/css/dataTables.bootstrap.css" rel="stylesheet" />

下面是html

技術分享
<div class="panel panel-default">
    <div class="panel-heading">
        <div class="panel-title">
            基本的datatables
        </div>
    </div>
    <div class="panel-body">
        <table id="table_local" class="table table-bordered table-striped table-hover">
            <thead>
                <tr>
                    <th>ID</th>
                    <th>FirstName</th>
                    <th>LastName</th>
                    <th>EnrollmentDate</th>
                    <th>Discriminator</th>
                </tr>
            </thead>
            @if(Model.Count() > 0) {
                <tbody>
                    @foreach(var p in Model) {
                        <tr>
                            <td>@p.PersonID</td>
                            <td>@p.FirstName</td>
                            <td>@p.LastName</td>
                            <td>@p.EnrollmentDate.GetValueOrDefault().ToString("yyyy-MM-dd HH:mm:ss")</td>
                            <td>@p.Discriminator</td>
                        </tr>
                    }
                </tbody>
            }
        </table>
    </div>
</div>
技術分享

然後是js

技術分享
<script type="text/javascript">
        $(function () {
            $("#table_local").dataTable({
                //lengthMenu: [5, 10, 20, 30],//這裏也可以設置分頁,但是不能設置具體內容,只能是一維或二維數組的方式,所以推薦下面language裏面的寫法。
                paging: true,//分頁
                ordering: true,//是否啟用排序
                searching: true,//搜索
                language: {
                    lengthMenu: ‘<select class="form-control input-xsmall">‘ + ‘<option value="1">1</option>‘ + ‘<option value="10">10</option>‘ + ‘<option value="20">20</option>‘ + ‘<option value="30">30</option>‘ + ‘<option value="40">40</option>‘ + ‘<option value="50">50</option>‘ + ‘</select>條記錄‘,//左上角的分頁大小顯示。
                    search: ‘<span class="label label-success">搜索:</span>‘,//右上角的搜索文本,可以寫html標簽

                    paginate: {//分頁的樣式內容。
                        previous: "上一頁",
                        next: "下一頁",
                        first: "第一頁",
                        last: "最後"
                    },

                    zeroRecords: "沒有內容",//table tbody內容為空時,tbody的內容。
                    //下面三者構成了總體的左下角的內容。
                    info: "總共_PAGES_ 頁,顯示第_START_ 到第 _END_ ,篩選之後得到 _TOTAL_ 條,初始_MAX_ 條 ",//左下角的信息顯示,大寫的詞為關鍵字。
                    infoEmpty: "0條記錄",//篩選為空時左下角的顯示。
                    infoFiltered: ""//篩選之後的左下角篩選提示,
                },
                paging: true,
                pagingType: "full_numbers",//分頁樣式的類型

            });
            $("#table_local_filter input[type=search]").css({ width: "auto" });//右上角的默認搜索文本框,不寫這個就超出去了。
        });

    </script>
技術分享

執行js之後,如果沒有報錯,那就會得到最上面的效果圖。四個編號上的內容都是可以通過傳入datatable()方法控制的。其中要註意,方法名是dataTable而不是DataTable,後者用於api的操作。

通過瀏覽器的開發者工具可以看到,四個控制塊的id分別為table的id 加上 length,filter,info,paginate,所以如有需要,可以直接用js來強制控制。

編號②中的搜索框是輸入內容後自動搜索表格上的所有列(當然可以通過他的api來實現搜索特定的列,比如某些隱藏列的篩選)。

圖如下:

技術分享

通過以上4個控制,基本可以滿足大部分table列表的需求。

這樣的table屬於一次性加載完所有數據,然後再調用js格式化。

晚上再寫用ajax異步加載數據datatable。

datatables 配套bootstrap3樣式使用小結(1)