DataTables的使用

最近在工作中,用了DataTables做为展示数据的表格。该控件支持分页,而且又漂亮。这是官网的地址http://www.datatables.net/ 。本文记录我在工作中用到DataTables的相关功能及实现。


在采用这个控件之前,服务端向网页返回数据,页面用javascipt将数据拼接成html的表格,代码中充斥着很多 += '<td>' '<tr>' '<a>'。而且还要处理分页,每个页码还要自己绑定一个拼接的url请求,代码不仅长,而且页面的展示效果不好功能也不够强大。

采用了这个控件展示数据后,javascript的代码减少了70-80行。它要求服务端要按照它规定的数据格式返回数据,接着会帮我们自动处理分页和数据的展示,就不用我们手动拼接字符串构造table表的元素了。

先看代码:

function generate_table() {
	g_table = $('#historyResult').dataTable({
		"oLanguage": {
            "sLengthMenu": "每页 _MENU_ 条数据",
            "sZeroRecords": "没有数据",
            "sInfo": "_START_ - _END_ 总(_TOTAL_)",
            "sInfoEmpty": "0 - 0 总数: 0"
        },
        "sPaginationType": "full_numbers",
		"bProcessing": true,
		"bServerSide": true,
		"bSort":false,
		"bFilter": false,
		"sAjaxSource": "/index.php/history/queryHistory",

		"fnServerParams": function( aoData )
		{
			aoData.push(
					{"name":"keywords","value":$('#keyword_txt').val(),
					{"name":"start_date","value":$('#start_date_txt').val()},
					{"name":"end_date","value":$('#end_date_txt').val()}
				)
		}
	});
}

具体的参数意思可以参考官方文档。这里提一下fnServerParams。这个参数可以帮我们传递页面的其他参数,这个例子中,我传递了关键字、起止日期信息,主要用于服务端的数据查找过滤。

chrome看一下控件会向服务端传递什么:



这是底部的分页栏



当我点第二页时,传递参数如下:


注意到iDisplayLength10,因为我默认是每页展示10条数据,这个值可以调整。当我点第二页时,iDisplayStart0变到10。其实分页就是这么回事,前端告诉服务端,我需要那段数据,你给我找出来返回给我。

服务端的返回格式如下(PHP):

$ret = array(
                "sEcho" => intval($_GET['sEcho']),
                "iTotalRecords" => $data_count,
                "iTotalDisplayRecords" => $data_count,
                "aaData" => array()
            );

$data_count是总数据量。aaData是需要展示的数据,之后可以填充。代码如下

$ret['aaData'][] = array($id, $user, $action, $business, $files, $time, $result);

这是填充一条数据的PHP代码,注意变量的前后位置很重要,这决定了表格中展示数据的位置。如果想在表格中嵌套<a>标签,这也是可以的。在服务端将数据拼接成a标签返回即可。

填充完后就返回数据:

echo json_encode($ret);

我所维护的页面有一个功能,就是能根据日期和关键字查找记录。当我们点击表格中的下一页时,它会自动的向服务端发起一次数据请求。然而,怎么让用户点击一个按钮时,也发起一次数据请求呢?

我的办法是:将这个表格先销毁,然后在重新生成。代码如下:

$("#search").click(function(){		
        g_table.fnDestroy();
        generate_table();
  });

重新生成表格会默认第一页,而每次搜索都是根据不同的关键字和日期的,所以跳到第一页是合理的。如果不用fnDestroy(),试图直接覆盖g_table重新生成,这是不允许的。

至此,实现了基于DataTables的数据查找及分页。


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
DataTables是一个强大的jQuery表格插件,它可以快速地将HTML表格转换成可排序、可搜索、可分页的数据表格。下面是DataTables插件的使用步骤: 1. 引入必要的文件 首先需要在HTML文件引入jQuery和DataTables的相关文件。例如: ``` <!-- 引入 jQuery --> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <!-- 引入 DataTables --> <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/jquery.dataTables.css"> <script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.js"></script> ``` 2. 创建HTML表格 在HTML文件创建一个普通的表格,例如: ``` <table id="example"> <thead> <tr> <th>ID</th> <th>Name</th> <th>Age</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>Tom</td> <td>25</td> </tr> <tr> <td>2</td> <td>Jerry</td> <td>28</td> </tr> <tr> <td>3</td> <td>Mary</td> <td>30</td> </tr> </tbody> </table> ``` 3. 初始化DataTables 使用jQuery的`DataTable()`函数初始化表格,例如: ``` $(document).ready(function() { $('#example').DataTable(); }); ``` 这样就可以将表格转换为可排序、可搜索、可分页的数据表格了。 还可以通过配置参数来定制表格的样式、功能等。例如: ``` $(document).ready(function() { $('#example').DataTable({ "paging": false, // 禁用分页 "searching": false, // 禁用搜索 "ordering": false, // 禁用排序 "info": false // 禁用信息显示 }); }); ``` 以上就是DataTables插件的使用步骤,希望可以帮到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值