数据源类型
Datatable可以使用三种基本的JavaScript数据类型作为数据源
- 数组(Arrays[])
- 对象(objects{})
- 实例(new myclass())
目前使用过的为前两种,现以前两种为例进行讲解
数组(Arrays)
当使用数组作为数据源,每个数组元素的数量必须等于表中的列数
var data = [
[
"Tiger Nixon",
"System Architect",
"Edinburgh",
"5421",
"2011/04/25",
"$3,120"
],
[
"Garrett Winters",
"Director",
"Edinburgh",
"8422",
"2011/07/25",
"$5,300"
]
];
//然后 DataTables 这样初始化:
$('#example').DataTable( {
data: data
} );
对象(Objects)数组
使用对象前,需要明确告诉 DataTables 那个属性对应那一列
var data = [
{
"name": "Tiger Nixon",
"position": "System Architect",
"salary": "$3,120",
"start_date": "2011/04/25",
"office": "Edinburgh",
"extn": "5421"
},
{
"name": "Garrett Winters",
"position": "Director",
"salary": "$5,300",
"start_date": "2011/07/25",
"office": "Edinburgh",
"extn": "8422"
}
];
//object可以如下初始化表格
$('#example').DataTable( {
data: data,
//使用对象数组,一定要配置columns,告诉 DataTables 每列对应的属性
//data 这里是固定不变的,name,position,salary,office 为你数据里对应的属性
columns: [
{ data: 'name' },
{ data: 'position' },
{ data: 'salary' },
{ data: 'office' }
]
} );
数据源
DataTables 支持三种数据源显示:
- DOM
- Ajax
- JavaScript
目前使用过前两种,现以前两种为例进行讲解
DOM
DataTables 初始化后,它会自动检查表格中的数据,如果存在即作为表显示的数据,这是使用 DataTables 最简单的方法,渲染已经存在的table
注意,当使用DOM显示表,DataTables 将会把数据当做数组作为数据源
DataTables还可以直接把 DOM 数据转化为自己的内部数据对象,示例如下:
<button id="table_id_example_button">获取选中的行</button>
<table id="table_id_example" class="display">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row 1 Data 1</td>
<td>Row 1 Data 2</td>
</tr>
<tr>
<td>Row 2 Data 1</td>
<td>Row 2 Data 2</td>
</tr>
</tbody>
</table>
$(document).ready( function () {
var table = $('#table_id_example').DataTable({
//这样配置后,即可用DT的API来访问表格数据
columns: [
{data: "column1"},
{data: "column2"}
]
});
//给行绑定选中事件
$('#table_id_example tbody').on( 'click', 'tr', function () {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
}
else {
table.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
}
} );
//给按钮绑定点击事件
$("#table_id_example_button").click(function () {
var column1 = table.row('.selected').data().column1;
var column2 = table.row('.selected').data().column2;
alert("第一列内容:"+column1 + ";第二列内容: " + column2);
});
} );
AJAX数据源
$(document).ready(function() {
$('#example').DataTable( {
"ajax": '{% url "phone:operate_query_spread" %}?',
"columns": [
{ "data": "name" },
{ "data": "position" },
{ "data": "office" },
{ "data": "extn" },
{ "data": "start_date" },
{ "data": "salary" }
]
} );
} );