datatables+springmvc+bootstrap实现分页

  datatables是前端的一个实现分页的插件,支持主流的浏览器,非常好用。datatables网址: http://www.datatables.club/

里面有许多的样式,还支持bootstrap。这里用datatables+springmvc+bootstrap做了一个样例。

  效果图:

数据是从服务器获取的,因为数据库不大,所有数据都通过json全部都传到前台了,datatables获取到数据就可以实现自动分页。

datatables使用

前台页面引入需要的js,css,然后添加一个table,表头自己定义

[html] view plain copy
  1.     <!--第一步:引入Javascript / CSS (CDN)-->  
  2.     <!-- DataTables CSS -->  
  3.     <link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.15/css/jquery.dataTables.css">  
  4.        
  5.     <!-- jQuery -->  
  6.     <script type="text/javascript" charset="utf8" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>  
  7.        
  8.     <!-- DataTables -->  
  9.     <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.15/js/jquery.dataTables.js"></script>  
  10.    .......................................................................................................................  
  11.                <!-- 显示表格边框table-bordered  缩小表格间距table-condensed -->  
  12.         <table id="example" class="table table-bordered table-condensed">  
  13.             <thead>  
  14.                 <tr>  
  15.                     <th><input type="checkbox" name="allChecked" /></th>  
  16.                     <th>id</th>  
  17.                     <th>学号</th>  
  18.                     <th>姓名</th>  
  19.                     <th>章节得分</th>  
  20.                     <th>oj习题得分</th>  
  21.                     <th>智能达标测试得分</th>  
  22.                     <th>总得分</th>  
  23.                     <th>操作</th>  
  24.                 </tr>  
  25.             </thead>  
  26.         </table>  

js使用:

[html] view plain copy
  1. $(function() {  
  2.       
  3.        
  4.     var table = $("#example").DataTable({  
  5.         "aLengthMenu":[10,20,40,60],//每页显示的条数,下拉框  
  6.         "searching":true,//禁用搜索  
  7.         "lengthChange":true,  
  8.         "paging": true,//开启表格分页  
  9.         "bProcessing" : true,//翻页时显示正在加载中  
  10.         //"bServerSide" : true,//服务端模式  
  11.         "bAutoWidth" : false,//是否自动适应宽度  
  12.         "sort" : "position",//禁用排序  
  13.         "deferRender":true,//延迟渲染   
  14.         "bStateSave" : true, //在其他页面刷新,会自动到第一页  
  15.         "length" : 10,//每页显示的条数  
  16.         "start" : 0,  
  17.         "dom": '<l<\'#topPlugin\'>f>rt<ip><"clear">',  
  18.         "ordering": false,//全局禁用排序  
  19.         "ajax": {  
  20.                 "type": "POST",  
  21.                 "url":contextPath + "/showZhangScoreService",  
  22.                 //查询传的参数  
  23.                 /*"data":function(d){  
  24.                     d.state=$("#state").val();  
  25.                     d.deptname=$("#deptname").val().trim();  
  26.                     d.startTime=$("#startTime").val();  
  27.                     d.endTime=$("#endTime").val();  
  28.                 }*/  
  29.         },  
  30.         "aoColumns" : [{  
  31.             //指的是类里面的id,存放  
  32.             "mData" : "runId",//类里面对应的属性  
  33.             "orderable": false , // 禁用排序  
  34.             "sDefaultContent" : "",//默认值  
  35.             "sWidth" : "2%"//列的宽度  
  36.                 },{  
  37.                     //指的是类里面的id,存放   
  38.                     "mData" : "runId",//类里面对应的属性  
  39.                     "orderable": false , // 禁用排序  
  40.                     "sDefaultContent" : "",//默认值  
  41.                     "sWidth" : "5%"//列的宽度  
  42.                 },   
  43.                 {  
  44.                     "mData" : "userId",  
  45.                     "orderable" : false, // 禁用排序  
  46.                     "sDefaultContent" : "",  
  47.                     "sWidth" : "10%"  
  48.                 }, {  
  49.                     "mData" : "userName",  
  50.                     "orderable" : false, // 禁用排序  
  51.                     "sDefaultContent" : "",  
  52.                     "sWidth" : "10%"  
  53.                 },  
  54.                 {  
  55.                     "mData" : "frist",  
  56.                     "orderable" : false, // 禁用排序  
  57.                     "sDefaultContent" : "",  
  58.                     "sWidth" : "10%"  
  59.                 },  
  60.                 {  
  61.                     "mData" : "second",  
  62.                     "orderable" : false, // 禁用排序  
  63.                     "sDefaultContent" : '',  
  64.                     "sWidth" : "10%"  
  65.                       
  66.                 },  
  67.                 {  
  68.                     "mData" : "thrid",  
  69.                     "orderable" : false, // 禁用排序  
  70.                     "sDefaultContent" : "",  
  71.                     "sWidth" : "10%"  
  72.                 },  
  73.                 {  
  74.                     "mData" : "total",  
  75.                     "orderable" : false, // 禁用排序  
  76.                     "sDefaultContent" : '',  
  77.                     "sWidth" : "10%"  
  78.                       
  79.                 },  
  80.                 {  
  81.                     "mData" : "runId",  
  82.                     "orderable" : false, // 禁用排序  
  83.                     "sDefaultContent" : '',  
  84.                     "sWidth" : "10%",  
  85.                     "render":function(data, type, full, meta){  
  86.                     return  data='<button id="deleteOne" class="btn btn-danger btn-sm" data-id='+data+'>删 除</button>';  
  87.                           
  88.                     }     
  89.                 }],  

如果数据库比较大的话是要开启"bServerSide" : true,//服务端模式,这样可以根据传入的参数去数据库取数据,本案例是取所有的数据,所以没有开启服务器模式。

没有开启服务器模式的请求参数,在开发者模式可以看到参数是比较少的。

开启服务器模式后参数会变多,有start和length这两个参数,start表示开始取数据的位置,length表示取的数量,后端接收到这两个参数,就可以根据这个来查询。

springmvc返回json数据

[java] view plain copy
  1. @Autowired  
  2. private ZhangScoreService zhangScoreService;  
  3.   
  4. @RequestMapping("/showZhangScoreService")  
  5. @ResponseBody  
  6. public Map<String, Object> showZhangScoreService() throws Exception {  
  7.     List<ZhangScore> ZhangScorelist = zhangScoreService.selsectAllZhangScore();  
  8.     System.out.println(ZhangScorelist.size());  
  9.     ZhangScore zhangScore= zhangScoreService.selectByPrimaryKey(29);  
  10.     System.out.println(zhangScore.toString());  
  11.     Map<String, Object> map2Json = new HashMap<String, Object>();  
  12.     map2Json.put("aaData", ZhangScorelist);  
  13.     return map2Json;  
  14. }  

springmvc导出csv表格

[java] view plain copy
  1. @RequestMapping("/export")  
  2. public void exportcsv(HttpServletRequest request,HttpServletResponse response) throws Exception{  
  3.      SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  4.      List exportData = new ArrayList<Map>();  
  5.     List<ZhangScore> list=  zhangScoreService.selsectAllZhangScore();  
  6.     if(list!=null){  
  7.         for (ZhangScore d:list) {  
  8.              Map<String, String> row = new LinkedHashMap<String, String>();  
  9.              row.put("1", d.getUserId());  
  10.              row.put("2", d.getUserName());  
  11.              row.put("3", d.getFrist()+"");  
  12.              row.put("4", d.getSecond()+"");  
  13.              row.put("5", d.getThrid()+"");  
  14.              row.put("6", d.getTotal()+"");  
  15.              exportData.add(row);  
  16.         }  
  17.            LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();  
  18.             map.put("1""学号");  
  19.             map.put("2""姓名");  
  20.             map.put("3""章节得分");  
  21.             map.put("4""oj习题得分");  
  22.             map.put("5""智能达标测试得分");  
  23.             String fileName=String.valueOf("信息"+new Date().getTime());  
  24.             try {  
  25.                 response.setHeader("Content-Disposition""attachment; filename="+URLEncoder.encode(fileName, "UTF-8")+".csv");  
  26.                 response.setContentType("application/csv");  
  27.                 //response.setContentType("application/x-msdownload");  txt  
  28.                 response.setCharacterEncoding("UTF-8");  
  29.                   
  30.                 String agent = request.getHeader("User-Agent");  
  31.                 boolean isMSIE = (agent != null && agent.indexOf("MSIE") != -1);  
  32.                 if( isMSIE ){  
  33.                     fileName = URLEncoder.encode(fileName,"UTF8");  
  34.                 }else{  
  35.                     fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");  
  36.                 }  
  37.                 //response.addHeader("Content-Length", "" + file.length());  
  38.                 response.setHeader("Content-Disposition""attachment; filename=" + fileName + ".csv");//这里设置一下让浏览器弹出下载提示框,而不是直接在浏览器中打开  
  39.                // response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".txt");  
  40.                   ExportCsvUtil.createCSVFile(exportData, map, response.getOutputStream());  
  41.               //  ExportCsvUtil.createTxtFile("6901285991219\t1\r\n6928防护等级459\t1",response.getOutputStream());  
  42.   
  43.             } catch (IOException e) {  
  44.                 e.printStackTrace();  
  45.   
  46.             }  
  47.     }  

前台通过js获取到选中的id,通过ajax就可以实现批量删除的功能。

本案例下载地址: https://download.csdn.net/download/bushqiang/10393004

猜你喜欢

转载自blog.csdn.net/bushqiang/article/details/80204574