天天看點

datatable插件實作分頁功能

注意:按照官方文檔的方法引入插件後會有點問題,樣式也不是很美觀,是以我做了修改。

由于通常djangotemplate 下的html檔案使用了模闆文法,是以要把CSS、JS檔案放在對應的模闆标簽下面

下面是我的一個樣例:

注意:table的id要改成“dataTables”,樣式會好看一些。

1

<code>id="dataTables"</code>

DataTable_Test.html

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

<code>{% extends 'common/base.html' %}</code>

<code>{% block css %}</code>

<code>    </code><code>&lt;</code><code>link</code> <code>rel</code><code>=</code><code>"stylesheet"</code> <code>type</code><code>=</code><code>"text/css"</code> <code>href</code><code>=</code><code>"/static/DataTables-1.10.15/media/css/jquery.dataTables.css"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>link</code> <code>rel</code><code>=</code><code>"stylesheet"</code> <code>type</code><code>=</code><code>"text/css"</code> <code>href</code><code>=</code><code>"/static/DataTables-1.10.15/media/css/dataTables.bootstrap.min.css"</code><code>&gt;</code>

<code>{% endblock %}</code>

<code>{% block content %}</code>

<code>&lt;</code><code>div</code> <code>class</code><code>=</code><code>"row"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>div</code> <code>class</code><code>=</code><code>"ibox"</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>div</code> <code>class</code><code>=</code><code>"ibox-title"</code><code>&gt;</code>

<code>{#            &lt;</code><code>h5</code><code>&gt;Uhost資訊&lt;/</code><code>h5</code><code>&gt;#}</code>

<code>            </code><code>&lt;</code><code>h5</code> <code>style</code><code>=</code><code>"font-size: large"</code><code>&gt;Uhost資訊&lt;/</code><code>h5</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>div</code> <code>class</code><code>=</code><code>"ibox-content"</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>div</code> <code>class</code><code>=</code><code>"row"</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>table</code> <code>id</code><code>=</code><code>"dataTables"</code> <code>class</code><code>=</code><code>"table table-striped table-hover"</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>thead</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>tr</code><code>&gt;</code>

<code>                        </code><code>&lt;</code><code>th</code> <code>class</code><code>=</code><code>"col-lg-2"</code><code>&gt;主機名稱&lt;/</code><code>th</code><code>&gt;</code>

<code>                        </code><code>&lt;</code><code>th</code> <code>class</code><code>=</code><code>"col-lg-2"</code><code>&gt;IP位址&lt;/</code><code>th</code><code>&gt;</code>

<code>                        </code><code>&lt;</code><code>th</code> <code>class</code><code>=</code><code>"col-lg-2"</code><code>&gt;價格&lt;/</code><code>th</code><code>&gt;</code>

<code>                        </code><code>&lt;</code><code>th</code> <code>class</code><code>=</code><code>"col-lg-2"</code><code>&gt;可用區&lt;/</code><code>th</code><code>&gt;</code>

<code>                        </code><code>&lt;</code><code>th</code> <code>class</code><code>=</code><code>"col-lg-2"</code><code>&gt;業務組&lt;/</code><code>th</code><code>&gt;</code>

<code>                        </code><code>&lt;</code><code>th</code> <code>class</code><code>=</code><code>"col-lg-2"</code><code>&gt;到期時間&lt;/</code><code>th</code><code>&gt;</code>

<code>                    </code><code>&lt;/</code><code>tr</code><code>&gt;</code>

<code>                </code><code>&lt;/</code><code>thead</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>tbody</code><code>&gt;</code>

<code>                    </code><code>{% for host in uhosts %}</code>

<code>                        </code><code>&lt;</code><code>td</code><code>&gt;{{ host.name }}&lt;/</code><code>td</code><code>&gt;</code>

<code>                        </code><code>&lt;</code><code>td</code><code>&gt;{{ host.ip }}&lt;/</code><code>td</code><code>&gt;</code>

<code>                        </code><code>&lt;</code><code>td</code><code>&gt;{{ host.price }}&lt;/</code><code>td</code><code>&gt;</code>

<code>                        </code><code>&lt;</code><code>td</code><code>&gt;{{ host.zone.name }}&lt;/</code><code>td</code><code>&gt;</code>

<code>                        </code><code>&lt;</code><code>td</code><code>&gt;{{ host.tag }}&lt;/</code><code>td</code><code>&gt;</code>

<code>                        </code><code>&lt;</code><code>td</code><code>&gt;{{ host.expiretime }}&lt;/</code><code>td</code><code>&gt;</code>

<code>                    </code><code>{% endfor %}</code>

<code>                </code><code>&lt;/</code><code>tbody</code><code>&gt;</code>

<code>            </code><code>&lt;/</code><code>table</code><code>&gt;</code>

<code>            </code><code>&lt;/</code><code>div</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>div</code><code>&gt;</code>

<code>    </code><code>&lt;/</code><code>div</code><code>&gt;</code>

<code>&lt;/</code><code>div</code><code>&gt;</code>

<code>{% block script %}</code>

<code>    </code> 

<code>    </code><code>&lt;</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code> <code>charset</code><code>=</code><code>"utf8"</code> <code>src</code><code>=</code><code>"/static/DataTables-1.10.15/media/js/jquery.dataTables.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

<code>    </code><code>&lt;!-- 由于base.html檔案中引入了jquery.js檔案是以這裡要注釋掉,否則可能引起函數方法沖突 --&gt;</code>

<code>   </code><code>&lt;!-- &lt;script type="text/javascript" charset="utf8" src="DataTables-1.10.15/media/js/jquery.js"&gt;&lt;/script&gt; --&gt;</code>

<code>    </code><code>&lt;</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code> <code>charset</code><code>=</code><code>"utf8"</code> <code>src</code><code>=</code><code>"/static/DataTables-1.10.15/media/js/dataTables.bootstrap.min.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code> <code>src</code><code>=</code><code>"/static/js/datatable_custom.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

datatable_custom.js是為了樣式好看,自定義樣式的一個js檔案,内容如下:

<code>/**</code>

<code> </code><code>* Created by cengchengpeng on 2018/1/10.</code>

<code> </code><code>*/</code>

<code>$(document).ready(function () {</code>

<code>    </code><code>$('#dataTables').DataTable({</code>

<code>        </code><code>language: {</code>

<code>            </code><code>"sProcessing": "進行中...",</code>

<code>            </code><code>"sLengthMenu": "顯示 _MENU_ 項結果",</code>

<code>            </code><code>"sZeroRecords": "沒有比對結果",</code>

<code>            </code><code>"sInfo": "顯示第 _START_ 至 _END_ 項結果,共 _TOTAL_ 項",</code>

<code>            </code><code>"sInfoEmpty": "顯示第 0 至 0 項結果,共 0 項",</code>

<code>            </code><code>"sInfoFiltered": "(由 _MAX_ 項結果過濾)",</code>

<code>            </code><code>"sInfoPostFix": "",</code>

<code>            </code><code>"sSearch": "搜尋:",</code>

<code>            </code><code>"sUrl": "",</code>

<code>            </code><code>"sEmptyTable": "表中資料為空",</code>

<code>            </code><code>"sLoadingRecords": "載入中...",</code>

<code>            </code><code>"sInfoThousands": ",",</code>

<code>            </code><code>"oPaginate": {</code>

<code>                </code><code>"sFirst": "首頁",</code>

<code>                </code><code>"sPrevious": "上頁",</code>

<code>                </code><code>"sNext": "下頁",</code>

<code>                </code><code>"sLast": "末頁"</code>

<code>            </code><code>},</code>

<code>            </code><code>"oAria": {</code>

<code>                </code><code>"sSortAscending": ": 以升序排列此列",</code>

<code>                </code><code>"sSortDescending": ": 以降序排列此列"</code>

<code>            </code><code>}</code>

<code>        </code><code>}</code>

<code>    </code><code>});</code>

<code>});</code>

base.html檔案

<code>&lt;!DOCTYPE html&gt;</code>

<code>&lt;</code><code>html</code><code>&gt;</code>

<code>&lt;</code><code>head</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>meta</code> <code>charset</code><code>=</code><code>"utf-8"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>meta</code> <code>name</code><code>=</code><code>"viewport"</code> <code>content</code><code>=</code><code>"width=device-width, initial-scale=1.0"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>title</code><code>&gt;CMDB管理&lt;/</code><code>title</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>link</code> <code>rel</code><code>=</code><code>"icon"</code> <code>href</code><code>=</code><code>"/static/images/bitbug_favicon.ico"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>link</code> <code>href</code><code>=</code><code>"/static/inspinia/css/bootstrap.min.css"</code> <code>rel</code><code>=</code><code>"stylesheet"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>link</code> <code>href</code><code>=</code><code>"/static/inspinia/font-awesome/css/font-awesome.css"</code> <code>rel</code><code>=</code><code>"stylesheet"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>link</code> <code>href</code><code>=</code><code>"/static/inspinia/css/animate.css"</code> <code>rel</code><code>=</code><code>"stylesheet"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>link</code> <code>href</code><code>=</code><code>"/static/inspinia/css/style.css"</code> <code>rel</code><code>=</code><code>"stylesheet"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>link</code> <code>href</code><code>=</code><code>"/static/css/css.css?v={{ verion }}"</code> <code>rel</code><code>=</code><code>"stylesheet"</code><code>&gt;</code>

<code>    </code><code>{% block css %}{% endblock %}</code>

<code>&lt;/</code><code>head</code><code>&gt;</code>

<code>&lt;</code><code>body</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>div</code> <code>id</code><code>=</code><code>"wrapper"</code><code>&gt;</code>

<code>        </code><code>{% include "common/menu.html" %}</code>

<code>        </code><code>&lt;</code><code>div</code> <code>id</code><code>=</code><code>"page-wrapper"</code> <code>class</code><code>=</code><code>"white-bg dashbard-1"</code><code>&gt;</code>

<code>            </code><code>{% block content %}{% endblock %}</code>

<code>&lt;/</code><code>body</code><code>&gt;</code>

<code>&lt;</code><code>script</code> <code>src</code><code>=</code><code>"/static/inspinia/js/jquery-2.1.1.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

<code>&lt;</code><code>script</code> <code>src</code><code>=</code><code>"/static/inspinia/js/bootstrap.min.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

<code>&lt;</code><code>script</code> <code>src</code><code>=</code><code>"/static/inspinia/js/plugins/metisMenu/jquery.metisMenu.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

<code>&lt;</code><code>script</code> <code>src</code><code>=</code><code>"/static/inspinia/js/plugins/slimscroll/jquery.slimscroll.min.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

<code>&lt;</code><code>script</code> <code>src</code><code>=</code><code>"/static/inspinia/js/inspinia.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

<code>&lt;</code><code>script</code> <code>src</code><code>=</code><code>"/static/inspinia/js/plugins/pace/pace.min.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

<code>&lt;</code><code>script</code> <code>src</code><code>=</code><code>"/static/inspinia/js/bootstrap-typeahead.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

<code>&lt;</code><code>script</code> <code>src</code><code>=</code><code>"/static/js/jquery.numeric.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

<code>&lt;</code><code>script</code> <code>src</code><code>=</code><code>"/static/js/common.js?v={{ verion }}"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

<code>&lt;!--&lt;script src="/static/js/workflow.js?v={{ verion }}"&gt;&lt;/script&gt;--&gt;</code>

<code>&lt;</code><code>script</code><code>&gt;</code>

<code>    </code><code>$('#side-menu').find('li&gt;a[href]').each(function(){</code>

<code>        </code><code>if(location.href.indexOf($(this).attr('href').toLowerCase()) != -1){</code>

<code>            </code><code>$(this).closest('li').addClass('active');</code>

<code>    </code><code>$('#foldPage').click(function(){</code>

<code>        </code><code>var fold = $(this).data('fold');</code>

<code>        </code><code>var $div = $('#accordion div[id]');</code>

<code>        </code><code>if(fold == "0"){</code>

<code>            </code><code>$div.addClass('in').removeAttr('style');</code>

<code>            </code><code>$(this).data('fold', 1);</code>

<code>        </code><code>else{</code>

<code>            </code><code>$div.removeClass('in');</code>

<code>            </code><code>$(this).data('fold', 0);</code>

<code>&lt;/</code><code>script</code><code>&gt;</code>

<code>{% block script %}{% endblock %}</code>

<code>&lt;/</code><code>html</code><code>&gt;</code>

效果:

每頁顯示多少行結果也可以通過修改js檔案來調整

本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/2059909,如需轉載請自行聯系原作者

繼續閱讀