Datatable基础应用
一直听说DataTable插件很好用,但自己一直从来没用过,因为文章列表都用了Django内置的分页之类的。但最近自己在优化个人控制界面的时候,觉得还是尝试一下datatable。用完之后就一个感觉:“DataTable太特么好用了,简直爽到爆。”
使用方法:
1、首先引入JS和CSS文件
JS:
<script src="/static/jquery/jquery-2.1.3.min.js"></script>
<script src="/static/js/jquery.dataTables.min.js"></script>
因为DataTable是基于JQuery的,因此jQuery的脚本是必须有的,且必须在前面,因为加载是有顺序的。
CSS:
<link rel="stylesheet" type="text/css" href="/static/css/jquery.dataTables.css">
2、HTML的编写
也就是你要写入数据的table标签。
<table class="table table-hover" id="datatable">
<thead>
<tr>
<th>标题</th>
<th>作者</th>
<th>发表时间</th>
<th>访问量</th>
</tr>
</thead>
<tbody id="tbody-result">
</tbody>
</table>
3、JS编写
该脚本就是控制你如何导入数据。我采用了ajax导入数据源,即异步加载的方式,其实例子在官方文档中已经很清楚了。
$(document).ready(function() {
$('#datatable').DataTable( {
"language": {
"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": "末页"
},
"oAria": {
"sSortAscending": ": 以升序排列此列",
"sSortDescending": ": 以降序排列此列"
}
},
"ajax": '/dashboard/articlelist/',
"columns": [
{ "data": "title" },
{ "data": "alias" },
{ "data": "author" },
{ "data": "read_times" }
]
} );
} );
如果会JQuery语法的话,就很好理解。language键值是将英文汉化了,可忽略。ajax键值是获取数据源的URL。这个要你自己编写代码,写你传递数据的逻辑,注意,该URL返回的应该是一个Json数据。我的是Django中的代码:
def articlelist(request):
user = request.user
if user.is_superuser != 1:
article_list = Article.objects.filter(author=user.id,status=0).order_by('pub_time')
else:
article_list = Article.objects.filter(status=0).order_by('pub_time')
articles = []
for article in article_list:
item = {}
item['title'] = article.title
item['alias'] = article.alias
item['author'] = article.author.username
item['read_times'] = article.read_times
#item['pub_time'] = article.pub_time.strftime('%Y-%m-%d')
articles.append(item)
return JsonResponse({'data':articles})
columns定义了数据的格式,也就是要插入到table中的一个顺序。
因此服务器传递的数据应该是下面的格式:
{"data":
[
{"alias": "blogintroduce", "author": "\u738b\u6d77\u6ce2", "read_times": 150, "title": "\u7f51\u7ad9\u4ecb\u7ecd"},
]
}
data是必须存在的,DataTable会自动获取data键值的数据。
示意图:
如图,该图可实现分页,可搜索。可以设置每页不同的显示数目。此外,点击标题可实现排序,如点击阅读量,可按照阅读量进行排序。
上面介绍的知识DataTable的基础应用,它还有很多比较实用的功能。
1、设置排序;
2、post参数,让服务器返回数据,刷新table。这应该是最实用的功能。
3、将DataTable的数据自动导出。
后续将上面提到的完善了。
--------EOF---------
微信分享/微信扫码阅读
微信分享/微信扫码阅读