一、Datatables简介
DataTables是一个jQuery的表格插件。这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格。主要特点:
二、如何使用
在做后台的时候并没有美工和前端工程师来配合你做页面,为了显示数据并有一定的美感,我们可以使用jQuery的DataTables插件来帮助我们完成任务
1、DataTables的默认配置
$(document).ready(function() { $(\'#example\').dataTable(); } );
2、DataTables的一些基础属性配置
\"bPaginate\": true, //翻页功能 \"bLengthChange\": true, //改变每页显示数据数量 \"bFilter\": true, //过滤功能 \"bSort\": false, //排序功能 \"bInfo\": true,//页脚信息 \"bAutoWidth\": true//自动宽度
3、数据排序
$(document).ready(function() { $(\'#example\').dataTable( { \"aaSorting\": [ [ 4, \"desc\" ] ] } ); } );
从第0列开始,以第4列倒序排列
4、隐藏某些列
$(document).ready(function() { $(\'#example\').dataTable( { \"aoColumnDefs\": [ { \"bSearchable\": false, \"bVisible\": false, \"aTargets\": [ 2 ] }, { \"bVisible\": false, \"aTargets\": [ 3 ] } ] } ); } );
5、国际化
$(document).ready(function() { $(\'#example\').dataTable( { \"oLanguage\": { \"sLengthMenu\": \"每页显示 _MENU_ 条记录\", \"sZeroRecords\": \"抱歉, 没有找到\", \"sInfo\": \"从 _START_ 到 _END_ /共 _TOTAL_ 条数据\", \"sInfoEmpty\": \"没有数据\", \"sInfoFiltered\": \"(从 _MAX_ 条数据中检索)\", \"oPaginate\": { \"sFirst\": \"首页\", \"sPrevious\": \"前一页\", \"sNext\": \"后一页\", \"sLast\": \"尾页\" }, \"sZeroRecords\": \"没有检索到数据\", \"sProcessing\": \"<img src=\'./loading.gif\' />\" } } ); } );
6、排序功能:
$(document).ready(function() { $(\'#example\').dataTable( { \"aoColumns\": [ null, { \"asSorting\": [ \"asc\" ] }, { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ] }, { \"asSorting\": [ ] }, { \"asSorting\": [ ] } ] } ); } );
7、数据获取支持4种:如下
三、实例讲解
1、需求:如下图所示,对datatables的内容进行添加,编辑,删除的操作。
2、分析:添加功能---单击add按钮,弹出对话框,添加新的内容。
编辑功能---单击datatables可以选中一行,此行改变颜色,即是已经选中,单击edit按钮,弹出dialog,此dialog中的内容是我们选中行的内容。如果没有选中行,点击edit按钮,则不会弹出dialog。当双击datatables中的某一行时,也弹出dialog,并且双击的行改变颜色,dialog中的内容是我们双击行的内容。
删除功能---单击datatables选中一行,单击delete按钮,弹出警告框,提示要不要删除所选内容。当没有选中任何内容时,单击delete按钮,不会弹出警告框,也不会删除内容。
3、 编码:
Attributes//名称
<table id=\"gridtable\" class=\"gridtable\">//声明jquery datatables <thead> <tr> <th>Name </th> <th>Value </th> <th>DisplayOrder </th> </tr> </thead> <tbody> .....//datatables内容,此处省略 </tbody> </table> <input type=\"button\" id=\"add\" value=\"Add\" />//添加按钮 <input type=\"button\" id=\"edit\" value=\"Edit\" />//编辑按钮 <input type=\"button\" id=\"delete\" value=\"Delete\" />//删除按钮 <div id=\"e_Attributes\">//声明dialog,异步更新 @using (Ajax.BeginForm(\"Update\", \"Product\", new AjaxOptions { UpdateTargetId = \"d_Attributes\", OnSuccess = \"dialogClose\", HttpMethod = \"Post\", })) { <table> <tbody> <tr> <td>Name</td> <td> <input id=\"name\" name=\"Name\" type=\"text\" style=\"width:250px\" class=\"required\"/>*</td> </tr> <tr> <td>Value</td> <td> <input id=\"value\" name=\"Value\" type=\"text\" style=\"width:250px\" class=\"required\"/>*</td> </tr> <tr> <td>DisplayOrder</td> <td> <input id=\"displayOrder\" name=\"DisplayOrder\" type=\"text\" style=\"width:128px\" class=\"required\"/>*</td> </tr> <tr> <td> <input id=\"submit\" type=\"submit\" name=\"submit\" value=\"Submit\" /> <input id=\"hiddenValue\" type=\"hidden\" name=\"hiddenValue\" /> </td> </tr> </tbody> </table> } </div>
上面代码说明:这段代码主要分了两个部分,第一部分是jquery datatables的声明,<table id=\"gridtable\" class=\"gridtable\">;第二部分是dialog的声明,以及操作所需要的action,此部分的操作选择ajax无刷新页面技术。所需js的代码:
<script type=\"text/javascript\"> function dialogClose() { $(\"#e_Attributes\").dialog(\"close\"); } $(\"#e_Attributes\").dialog({ modal: true, autoOpen: false, show: { effect: \"blind\", duration: 1000 }, hide: { effect: \"explode\", duration: 1000 }, width: 400 }); var editor; $(function () { //声明datatable $(\"#gridtable\").dataTable().fnDestroy(); editor = $(\'#gridtable\').dataTable({ \"bInfo\":false, \"bServerSide\": false, \'bPaginate\': false, //是否分页。 \"bProcessing\": false, //当datatable获取数据时候是否显示正在处理提示信息。 \'bFilter\': false, //是否使用内置的过滤功能。 \'bLengthChange\': false, //是否允许用户自定义每页显示条数。 \'sPaginationType\': \'full_numbers\', //分页样式 }); //单击,赋值,改样式 $(\"#gridtable tbody tr\").click(function (e) { if ($(this).hasClass(\'row_selected\')) { $(this).removeClass(\'row_selected\'); putNullValue() } else { editor.$(\'tr.row_selected\').removeClass(\'row_selected\'); $(this).addClass(\'row_selected\'); var aData = editor.fnGetData(this); if (null != aData) { putValue(aData); } } }); //双击 $(\"#gridtable tbody tr\").dblclick(function () { if ($(this).hasClass(\'row_selected\')) { //$(this).removeClass(\'row_selected\'); } else { editor.$(\'tr.row_selected\').removeClass(\'row_selected\'); $(this).addClass(\'row_selected\'); } var aData = editor.fnGetData(this); if (null != aData) { putValue(aData); } $(\"#hiddenValue\").val(\"edit\"); $(\"#e_Attributes\").dialog(\"open\"); }); //添加 $(\"#add\").click(function () { editor.$(\'tr.row_selected\').removeClass(\'row_selected\'); putNullValue(); $(\"#hiddenValue\").val(\"add\"); $(\"#e_Attributes\").dialog(\"open\"); }); //编辑 $(\"#edit\").click(function () { var productAttributeID = $(\"#productAttributeID\").val(); if (productAttributeID != \"\" && productAttributeID != null) { $(\"#hiddenValue\").val(\"edit\"); $(\"#e_Attributes\").dialog(\"open\"); } }); //删除 $(\"#delete\").click(function () { var productAttributeID = $(\"#productAttributeID\").val(); var productID = $(\"#productID\").val(); if (productAttributeID != null && productAttributeID != \"\") { if (confirm(\"Delete?\")) { $.ajax({ type: \"GET\", url: \"@Url.Action(\"DeleteAttribute\", \"Product\")\", data: { ProductID: productID, ProductAttributeID: productAttributeID },//参数名要和Action 中的参数名相同 dataType: \"html\", cache: false, success: function (result) { $(\"#d_Attributes\").html(result); $(\"#productAttributeID\").val(null); } }); } } }); //赋空值,并去除input-validation-error样式(此样式不管有无,均可去除,所以不用判断了) function putNullValue() { 。。。。。。//此处省略 } //赋值 function putValue(aData) { 。。。。。。//此处省略 } }); $.ajaxSetup({ cache: false }); </script>
上面代码说明:这段代码分别为dialog 的声明,datatables的声明以add,edit,delete的操作。
添加功能效果图
编辑功能效果图:
删除效果图:
到此,功能已经全部实现,所需的代码也已经贴出。
4、分页实现
引入CSS文件和JS文件
<style type=\"text/css\" title=\"currentStyle\"> @import \"DataTables-1.8.1/media/css/demo_page.css\"; @import \"DataTables-1.8.1/media/css/demo_table.css\"; @import \"DataTables-1.8.1/media/css/demo_table_jui.css\"; </style> <script type=\"text/javascript\" language=\"javascript\" src=\"DataTables-1.8.1/media/js/jquery.js\"></script> <script type=\"text/javascript\" language=\"javascript\" src=\"DataTables-1.8.1/media/js/jquery.dataTables.js\"></script> -------------------------------------------------------------------------- -----------最简单的方式: $(document).ready(function() { $(\"#example\").dataTable(); }); ----------也可以自己定义各属性: <script type=\"text/javascript\" language=\"javascript\"> $(document).ready(function() { $(\"#example\").dataTable({ // \"bPaginate\": true, //开关,是否显示分页器 // \"bInfo\": true, //开关,是否显示表格的一些信息 // \"bFilter\": true, //开关,是否启用客户端过滤器 // \"sDom\": \"<>lfrtip<>\", // \"bAutoWith\": false, // \"bDeferRender\": false, // \"bJQueryUI\": false, //开关,是否启用JQueryUI风格 // \"bLengthChange\": true, //开关,是否显示每页大小的下拉框 // \"bProcessing\": true, // \"bScrollInfinite\": false, // \"sScrollY\": \"800px\", //是否开启垂直滚动,以及指定滚动区域大小,可设值:\'disabled\',\'2000px\' // \"bSort\": true, //开关,是否启用各列具有按列排序的功能 // \"bSortClasses\": true, // \"bStateSave\": false, //开关,是否打开客户端状态记录功能。这个数据是记录在cookies中的,打开了这个记录后,即使刷新一次页面,或重新打开浏览器,之前的状态都是保存下来的- ------当值为true时aoColumnDefs不能隐藏列 // \"sScrollX\": \"50%\", //是否开启水平滚动,以及指定滚动区域大小,可设值:\'disabled\',\'2000%\' // \"aaSorting\": [[0, \"asc\"]], // \"aoColumnDefs\": [{ \"bVisible\": false, \"aTargets\": [0]}]//隐藏列 // \"sDom\": \'<\"H\"if>t<\"F\"if>\', \"bAutoWidth\": false, //自适应宽度 \"aaSorting\": [[1, \"asc\"]], \"sPaginationType\": \"full_numbers\", \"oLanguage\": { \"sProcessing\": \"正在加载中......\", \"sLengthMenu\": \"每页显示 _MENU_ 条记录\", \"sZeroRecords\": \"对不起,查询不到相关数据!\", \"sEmptyTable\": \"表中无数据存在!\", \"sInfo\": \"当前显示 _START_ 到 _END_ 条,共 _TOTAL_ 条记录\", \"sInfoFiltered\": \"数据表中共为 _MAX_ 条记录\", \"sSearch\": \"搜索\", \"oPaginate\": { \"sFirst\": \"首页\", \"sPrevious\": \"上一页\", \"sNext\": \"下一页\", \"sLast\": \"末页\" } } //多语言配置 }); }); </script>
对于 dataTables 来说,表格必须通过 thead 和 tbody 进行说明,如下所示,
<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\"> <thead> <tr> <th> Rendering engine </th> <th> Browser </th> <th> Platform(s) </th> <th> Engine version </th> <th> CSS grade </th> </tr> </thead> <tbody> <tr class=\"odd gradeX\"> <td> Trident </td> <td> Internet Explorer 4.0 </td> <td> Win 95+ </td> <td class=\"center\"> 4 </td> <td class=\"center\"> X </td> </tr>
如果没有 thead 将会报错。
最为简单的使用方式,就是零配置的方式。
/* * Example init */ $(document).ready(function(){ $(\'#example\').dataTable(); });
以上就是关于jQuery表格插件datatables用法的详细介绍,希望对大家的学习有所帮助。
本文地址:https://www.stayed.cn/item/23020
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我