jquery分頁插件datatables各參數詳細說明及簡單應用


簡介:Datatables是一款強大的jquery分頁插件,不但具備分頁功能,還可進行數據搜索過濾、排序等功能。
當前最新版本:v1.9.0
下載地址:

http://www.datatables.net/download/

http://115.com/file/dp5u9szo

寒風提醒:下載后,將media文件夾里面的css,images,js文件夾拷貝到你的網站即可。接下來引入以下內容:

1
2
3
4
5
6
7
8
9
10
11
<style type="text/css" title="currentStyle">
	@import "./style/datatable/css/demo_page.css";
	@import "./style/datatable/css/demo_table.css";
</style>
<script type="text/javascript" src="./style/datatable/js/jquery.js"></script>
<script type="text/javascript" src="./style/datatable/js/jquery.dataTables.min.js"></script>
<script type="text/javascript">
	$(document).ready(function() {
	    $('#example').dataTable();//其中example為table的id,table中必須有thead!
	} );
</script>

1. datatables簡單示例

http://www.datatables.net/release-datatables/examples/basic_init/zero_config.html

1
2
3
$(document).ready(function() {
$('#example').dataTable();
} );

這個是不進行參數配置,效果如下圖:

2. 進行基本參數配置

http://www.datatables.net/release-datatables/examples/basic_init/filter_only.html

1
2
3
4
5
6
"bPaginate": true, //翻頁功能
"bLengthChange": true, //改變每頁顯示數據數量
"bFilter": true, //過濾功能
"bSort": true, //排序功能
"bInfo": true,//頁腳信息
"bAutoWidth": true,//自動寬度

寒風說明:以上參數配置實現的顯示效果和第一個是一樣的。
3. 默認排序設置,aaSorting

http://www.datatables.net/release-datatables/examples/basic_init/table_sorting.html

1
"aaSorting": [[ 4, "desc" ]],//設置第5個元素為默認排序

4. 多個datatable

http://www.datatables.net/release-datatables/examples/basic_init/multiple_tables.html

寒風說明:
將表單id改為class:
初始化:

1
$('.example').dataTable(

即可。
5. 隱藏部分列的內容,aoColumnDefs

http://www.datatables.net/release-datatables/examples/basic_init/hidden_columns.html

1
2
3
4
"aoColumnDefs": [
{ "bSearchable": false, "bVisible": false, "aTargets": [ 2 ] },//bSearchable:是否可搜索;bVisible:是否可見;aTargets:哪一列
{ "bVisible": false, "aTargets": [ 3 ] }//
]

6. 修改表單各元素顯示位置

http://www.datatables.net/release-datatables/examples/basic_init/dom.html

1
"sDom": '<"top"i>rt<"bottom"flp><"clear">'

表示的html為:

1
2
3
4
5
6
7
8
9
10
11
12
13
<div class="top">這里顯示 當前條數,總共條數</div>
這里顯示 請求中的提示信息,表單內容
<div class="bottom">這里顯示 搜索框,每頁數量選擇,翻頁按鈕</div>
<div class="clear"></div>
 
//l - 每頁數量選擇select
//f – 搜索框search
//t – 表單內容table
//i – 當前條數,總共條數information
//p – 翻頁按鈕pagination
//r – 請求中的提示信息
//< 和 > – 一個div的開始與結束
//<"class"> – class為div的class名稱

7. 保存當前頁面信息為cookie,默認關閉

http://www.datatables.net/release-datatables/examples/basic_init/state_save.html

1
"bStateSave": true

如果用戶關閉頁面后重新打開該頁面,該列表會和關閉前的狀態完全一樣(長度,過濾,分頁和排序)

8. 修改默認分頁顯示樣式

http://www.datatables.net/release-datatables/examples/basic_init/alt_pagination.html

1
"sPaginationType": "full_numbers"

9. x軸寬度限制

http://www.datatables.net/release-datatables/examples/basic_init/scroll_x.html

1
2
3
"sScrollX": "100%",
"sScrollXInner": "110%",
"bScrollCollapse": true

用的很少

10. y軸高度限制

http://www.datatables.net/release-datatables/examples/basic_init/scroll_y.html

1
2
"sScrollY": "200px",
"bPaginate": false //該參數為是否顯示分頁,如果設置為true貌似就沒什么意義了

11. x軸、y軸均限制

http://www.datatables.net/release-datatables/examples/basic_init/scroll_xy.html

1
2
3
"sScrollY": 200,
"sScrollX": "100%",
"sScrollXInner": "110%"

12. 應用主題

http://www.datatables.net/release-datatables/examples/basic_init/themes.html

需要拷貝examples/examples_support/themes文件夾到style/datatable里面

1
@import "./style/datatable/css/demo_table.css";

替換為:

1
2
3
@import "./style/datatable/css/demo_table_jui.css";
主題一:
引入<pre lang="html" line="1">@import "./style/datatable/themes/smoothness/jquery-ui-1.8.4.custom.css";


主題二:
引入

1
@import "./style/datatable/themes/ui-lightness/jquery-ui-1.8.4.custom.css";

主題二是橘色系的,木有第一個smoothness好看,這里就不截圖了!

13. 語言設置

http://www.datatables.net/release-datatables/examples/basic_init/language.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
"oLanguage": {
"sLengthMenu": "每頁顯示 _MENU_條",
"sZeroRecords": "沒有找到符合條件的數據",
"sProcessing": "&lt;img src=’./loading.gif’ /&gt;",
"sInfo": "當前第 _START_ - _END_ 條 共計 _TOTAL_ 條",
"sInfoEmpty": "木有記錄",
"sInfoFiltered": "(從 _MAX_ 條記錄中過濾)",
"sSearch": "搜索:",
"oPaginate": {
"sFirst": "首頁",
"sPrevious": "前一頁",
"sNext": "后一頁",
"sLast": "尾頁"
}
}

也可以直接指定語言包,txt文件:

1
"sUrl": "media/language/de_DE.txt" //文件格式和上面一樣

14. 各列數據input過濾

http://www.datatables.net/release-datatables/examples/api/multi_filter.html

最前面加入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var asInitVals = new Array();
$('#example').dataTable 修改為:var oTable =$('#example').dataTable
加入:
/*過濾代碼開始*/
$("tfoot input").keyup( function () {
oTable.fnFilter( this.value, $("tfoot input").index(this) );
} );
$("tfoot input").each( function (i) {
asInitVals[i] = this.value;
} );
$("tfoot input").focus( function () {
if ( this.className == "search_init" )
{
this.className = "";
this.value = "";
}
} );
$("tfoot input").blur( function (i) {
if ( this.value == "" )
{
this.className = "search_init";
this.value = asInitVals[$("tfoot input").index(this)];
}
} );

tfoot里面加入:

1
2
3
4
5
6
7
<tr>
    <th><input type="text" name="search_engine" value="Search engines" class="search_init" /></th>
    <th><input type="text" name="search_browser" value="Search browsers" class="search_init" /></th>
    <th><input type="text" name="search_platform" value="Search platforms" class="search_init" /></th>
    <th><input type="text" name="search_version" value="Search versions" class="search_init" /></th>
    <th><input type="text" name="search_grade" value="Search grades" class="search_init" /></th>
</tr>

15. 每一行點擊詳情效果

http://www.datatables.net/release-datatables/examples/api/row_details.html

在最前面引入函數:

1
2
3
4
5
6
7
8
9
10
/* 構造每一行詳情的函數 fnFormatDetails*/
function fnFormatDetails ( oTable, nTr ){
    var aData = oTable.fnGetData( nTr );
    var sOut = '<table cellpadding="6" cellspacing="0" border="0" style="padding-left:50px;">'; //在這里定義要返回的內容
    sOut += '<tr><td>Rendering engine:</td><td>'+aData[1]+' '+aData[4]+'</td></tr>';
    sOut += '<tr><td>Link to source:</td><td>Could provide a link here</td></tr>';
    sOut += '<tr><td>Extra info:</td><td>And any further details here (images etc)</td></tr>';
    sOut += '</table>';
    return sOut;
}

ready(function)里面開頭加入:

1
2
3
4
5
6
7
8
9
10
11
12
/*顯示每一行詳情用_start*/
var nCloneTh = document.createElement( 'th' );
var nCloneTd = document.createElement( 'td' );
nCloneTd.innerHTML = '<img src="./style/datatable/images/details_open.png">';
nCloneTd.className = "center";
$('#example thead tr').each( function () {
    this.insertBefore( nCloneTh, this.childNodes[0] );
} );
$('#example tbody tr').each( function () {
    this.insertBefore(  nCloneTd.cloneNode( true ), this.childNodes[0] );
} );
/*顯示每一行詳情用_end*/

ready(function)里面末尾加入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*加入展開,收縮每一行詳情按鈕用*/
$('#example tbody td img').live('click', function () {
    var nTr = $(this).parents('tr')[0];
    if ( oTable.fnIsOpen(nTr) )
    {
        this.src = "./style/datatable/images/details_open.png";
        oTable.fnClose( nTr );
    }
    else
    {
        this.src = "./style/datatable/images/details_close.png";
        oTable.fnOpen( nTr, fnFormatDetails(oTable, nTr), 'details' );
    }
} );

值得注意的是,如果加入了tfoot,必須手動在里面加入多一行th!

最后,是寒風寫的簡單的php+mysql+datatables的簡單示例,很多寒風都做了詳細的注釋說明:

1
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
<?php 
$mysqli=new mysqli("localhost","root","","database");
$mysqli->query("SET NAMES utf8");
 
$result=$mysqli->query("SELECT * FROM `table` limit 500");
if(!$result){
	echo "查詢出錯!";
	exit;
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css" title="currentStyle">
	@import "./style/datatable/css/demo_page.css";
	@import "./style/datatable/css/demo_table_jui.css";
	@import "./style/datatable/themes/smoothness/jquery-ui-1.8.4.custom.css";
	body{ font-size:12px;}
	table{ font-size:12px;}
</style>
<script type="text/javascript" src="./style/datatable/js/jquery.js"></script>
<script type="text/javascript" src="./style/datatable/js/jquery.dataTables.min.js"></script>
 
<script type="text/javascript">
	/* 構造每一行詳情的函數 fnFormatDetails*/
	function fnFormatDetails ( oTable, nTr ){
		var aData = oTable.fnGetData( nTr );
		var sOut = '<table cellpadding="6" cellspacing="0" border="0" style="padding-left:50px;">'; //在這里定義要返回的內容
		sOut += '<tr><td>Rendering engine:</td><td>'+aData[1]+' '+aData[4]+'</td></tr>';
		sOut += '<tr><td>Link to source:</td><td>Could provide a link here</td></tr>';
		sOut += '<tr><td>Extra info:</td><td>And any further details here (images etc)</td></tr>';
		sOut += '</table>';
		return sOut;
	}
 
	/*頁面元素加載完成后開始執行*/
	$(document).ready(function() {
		/*顯示每一行詳情用_start*/
		var nCloneTh = document.createElement( 'th' );
		var nCloneTd = document.createElement( 'td' );
		nCloneTd.innerHTML = '<img src="./style/datatable/images/details_open.png">';
		nCloneTd.className = "center";
		$('#example thead tr').each( function () {
			this.insertBefore( nCloneTh, this.childNodes[0] );
		} );
		$('#example tbody tr').each( function () {
			this.insertBefore(  nCloneTd.cloneNode( true ), this.childNodes[0] );
		} );
		/*顯示每一行詳情用_end*/
 
		var asInitVals = new Array(); //用於每一列搜索過濾
	    var oTable =$('#example').dataTable( //var oTable用於每一列搜索過濾
	    	{
				/*基本參數設置,以下參數設置和默認效果一致*/
	    		"bPaginate": true, //翻頁功能
	    		"bLengthChange": true, //改變每頁顯示數據數量
	    		"bFilter": true, //過濾功能
	    		"bSort": true, //排序功能
	    		"bInfo": true,//頁腳信息
	    		"bAutoWidth": true,//自動寬度
	    		/*默認排序設置*/
	    		"aaSorting": [[ 4, "desc" ]],//設置第5個元素為默認排序
                /*默認翻頁樣式設置*/
	    		"sPaginationType": "full_numbers",
	    		/*是否開啟主題*/
	    		"bJQueryUI": true,
				/*語言設置*/
	            "oLanguage": {
	                "sLengthMenu": "每頁顯示 _MENU_條",
	                "sZeroRecords": "沒有找到符合條件的數據",
	                "sProcessing": "<img src=’./loading.gif’ />",
	                "sInfo": "當前第 _START_ - _END_ 條 共計 _TOTAL_ 條",
	                "sInfoEmpty": "木有記錄",
	                "sInfoFiltered": "(從 _MAX_ 條記錄中過濾)",
	                "sSearch": "搜索:",
                	"oPaginate": {
    	            	"sFirst": "首頁",
    	            	"sPrevious": "前一頁",
    	            	"sNext": "后一頁",
    	            	"sLast": "尾頁"
    		        }
	            }
			}
	    );
 
		/*每一列搜索過濾代碼開始*/
	    $("tfoot input").keyup( function () {
	        oTable.fnFilter( this.value, $("tfoot input").index(this) );
	    } );
	    $("tfoot input").each( function (i) {
	        asInitVals[i] = this.value;
	    } );
	    $("tfoot input").focus( function () {
	        if ( this.className == "search_init" )
	        {
	            this.className = "";
	            this.value = "";
	        }
	    } );
	    $("tfoot input").blur( function (i) {
	        if ( this.value == "" )
	        {
	            this.className = "search_init";
	            this.value = asInitVals[$("tfoot input").index(this)];
	        }
	    } );
 
		/*加入展開,收縮每一行詳情按鈕用*/
		$('#example tbody td img').live('click', function () {
			var nTr = $(this).parents('tr')[0];
			if ( oTable.fnIsOpen(nTr) )
			{
				this.src = "./style/datatable/images/details_open.png";
				oTable.fnClose( nTr );
			}
			else
			{
				this.src = "./style/datatable/images/details_close.png";
				oTable.fnOpen( nTr, fnFormatDetails(oTable, nTr), 'details' );
			}
		} );
	} );
</script>
</head>
 
<body>
<div style=" width:800px; margin:0 auto;">
<table cellpadding="0" cellspacing="0" class="display" border="0" id="example">
<thead>
  <tr>
    <th>ID</th>
    <th>時間</th>
    <th>數量</th>
    <th>次數</th>
    <th>消耗</th>
  </tr>
</thead>
<tbody>
<?php
while($rows=$result->fetch_assoc()){
	$rows['time']=date("Y-m-d H:i:s",$rows['time']);
	echo "
	<tr>
	  <td>{$rows['ID']}</td>
	  <td>{$rows['time']}</td>
	  <td>{$rows['r_num']}</td>
	  <td>{$rows['r_times']}</td>
	  <td>{$rows['money']}</td>
	</tr>";
}
?>
</tbody>
<tfoot>
  <tr>
    <th></th>
    <th>ID</th>
    <th>時間</th>
    <th>數量</th>
    <th>次數</th>
    <th>消耗</th>
  </tr>
	<tr>
		<th></th>
		<th><input type="text" name="search_engine" value="Search engines" class="search_init" /></th>
		<th><input type="text" name="search_browser" value="Search browsers" class="search_init" /></th>
		<th><input type="text" name="search_platform" value="Search platforms" class="search_init" /></th>
		<th><input type="text" name="search_version" value="Search versions" class="search_init" /></th>
		<th><input type="text" name="search_grade" value="Search grades" class="search_init" /></th>
	</tr>
</tfoot>
</table>
<style>
#example tr.even:hover {background-color: #ECFFB3;}
#example tr.even:hover td.sorting_1 {background-color: #DDFF75;}
#example tr.even:hover td.sorting_2 {background-color: #E7FF9E;}
#example tr.even:hove3 {background-color: #E2FF89;}
#example tr.odd:hover {background-color: #E6FF99;}
#example tr.odd:hover td.sorting_1 {background-color: #D6FF5C;}
#example tr.odd:hover td.sorting_2 {background-color: #E0FF84;}
#example tr.odd:hover td.sorting_3 {background-color: #DBFF70;}
</style>
</div>
</body>
</html>

實現了上面絕大部分功能!以上php+datatables示例僅適用於數據量少時的情況,數據量大的情況寒風以后再專門寫博文~
最終效果圖如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM