`
yuexiaodong
  • 浏览: 70599 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用jquery插件datatable 遇到的一点问题

阅读更多

     今天想找一个比较不错的表格插件,以前使用过一些,最终觉得DataTables不错,决定深入研究一下,便把官方文档的一个带数据库的事例自己亲自在eclipse做了一遍,途中非常坎坷,足足费了一个下午,还好结果比较圆满,下面做一下总结:

1、问题:加载数据问题。

官方给的事例是用Php说明动态加载数据,我是做jsp的,当然得自己做,如何用jsp生成json格式数据成了第一个问题。下面是解决方案。首先下载一个插件,json-taglib.jar 放置WEB-INF/libX下,这样就可以在eclipse中使用如下的<json:object></json:object>标记输出json数据了,注意:我现在做的是jsp输出json格式数据,不是后台servlet生成。json-taglib.jar的使用见网址:http://json-taglib.sourceforge.net/tutorial.html 本人的生成数据方式如下:

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>
<%@page  import="cn.heu.po.*,cn.heu.db.*"%>
     <% 
     List<Ajax> l=new ArrayList<Ajax>();
     String sql="select * from  ajax ";
     l=DBUtil.getResults(sql); //查询数据
     pageContext.setAttribute("items",l);
    // request.setAttribute("items",l); //两种方式均可
      %> 
<json:object>
      <json:array name="aaData" items='${items}' var="item">
           <json:array>
              <json:property value="${item.engine}"></json:property> 
              <json:property value="${item.browser}"></json:property>    
              <json:property value="${item.platform}"></json:property> 
              <json:property value="${item.version}"></json:property> 
              <json:property value="${item.grade}"></json:property> 
            </json:array>
        </json:array>
     </json:object>

 

此文档主要是生成json格式数据, 注意生成的json格式数据必须是这样的
{ 
"aaData": 
 [
 
 ["Trident","Internet Explorer 4.0","Win 95+","4","X"],
 
  ["Trident","Internet Explorer 5.0","Win 95+","5","C"],
 
 ["Other browsers","All others","-","-","U"]
     ...
 ]
}

 

然后下面的网页调用该jsp显示后台数据:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/media/images/favicon.ico" />
  
  <title>DataTables example</title>
  <style type="text/css" title="currentStyle">
   @import "css/demo_page.css";
      @import "css/demo_table.css";
      @import "css/demo_table_jui.css"
      @import "css/ui-lightness/jquery-ui-1.8.4.custom.css"
   
      
    </style>
  <script type="text/javascript" language="javascript" src="js/jquery.js"></script>
  <script type="text/javascript" language="javascript" src="js/jquery.dataTables.js"></script>
  <script type="text/javascript" charset="utf-8">
   $(document).ready(function() {
    $('#example').dataTable( {
       
     "sPaginationType": "full_numbers",
     "oLanguage": { "Search": "搜索:" },   
                     "iDisplayLength": 10, 
     "bProcessing": true,
     "bServerSide": fasle,     // 注意该属性允许通过服务端加载数据,设为true即可。现在是jsp在客户端翻译   
        "sAjaxSource": "jsp/test_dt.jsp", //实际是返回一个json字符串
           
            "oLanguage": {                          //汉化   
                        "sLengthMenu": "每页显示 _MENU_ 条记录",   
                        "sZeroRecords": "没有检索到数据",   
                        "sInfo": "当前数据为从第 _START_ 到第 _END_ 条数据;总共有 _TOTAL_ 条记录",   
                        "sInfoEmtpy": "没有数据",   
                        "sProcessing": "正在加载数据...",   
                        "oPaginate": 
                        {   
                            "sFirst": "首页",   
                            "sPrevious": "上一页",   
                            "sNext": "下一页",   
                            "sLast": "尾页"  
                        }   
                    }   
    }    
     );
   } );
  </script>
 </head>
 <body id="dt_example">
  <div id="container">
   <div class="full_width big">
    <i>DataTables</i>
   </div>
   
   <h1>Preamble</h1>
   <h1>动态加载数据</h1>
   <div id="dynamic">
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
 <thead>
  <tr>
   <th width="20%">Rendering engine</th>
   <th width="25%">Browser</th>
   <th width="25%">Platform(s)</th>
   <th width="15%">Engine version</th>
   <th width="15%">CSS grade</th>
  
  </tr>
 </thead>
 <tbody>
  <tr>
   <td colspan="5" class="dataTables_empty">加载数据。。。</td>
  </tr>
 </tbody>
 <tfoot>
  <tr>
   <th>Rendering engine</th>
   <th>Browser</th>
   <th>Platform(s)</th>
   <th>Engine version</th>
   <th>CSS grade</th>
   <th></th>
   <th></th>
  </tr>
 </tfoot>
</table>
   </div>
   </div>
  </body>
</html>

 这样即可加载数据了。

 

问题2、出现以下问题的原因:

“当前数据为从第 1 到第 NaN 条数据;总共有 NaN 条记录 (filtered from NaN total entries)”

 

注意到上边的

 

<script type="text/javascript" charset="utf-8">
   $(document).ready(function() {
    $('#example').dataTable( {
       
     "sPaginationType": "full_numbers",
     "oLanguage": { "Search": "搜索:" },   
                     "iDisplayLength": 10, 
     "bProcessing": true,
     "bServerSide": fasle,     // 注意该属性允许通过服务端加载数据,设为true即可。现在是jsp在客户端翻译   
        "sAjaxSource": "jsp/test_dt.jsp", //实际是返回一个json字符串

 bServerSide属性值为false,因为现在是jsp作为数据源,jsp的执行是在客户端进行的,不是在服务器执行,所以设置为false,一开始我设置为true,所以出现上述错误。详细阐述主要参见官方有关该部分的说明:http://datatables.net/usage/server-side

先摘出部分如下:When using server-side processing, DataTables will make an XHR request to the server for each draw of the information on the page (i.e. when paging, sorting, filtering etc). DataTables will send a number of variables to the server to allow it to perform the required processing, and then return the data in the format required by DataTables.

 

这个功能主要是为了提升大数据量时使用的,正好适合我的需求。

 

分享到:
评论

相关推荐

    jQuery使用DataTable实现删除数据后重新加载功能

    在使用jQuery和DataTable插件构建数据表格时,有时我们需要实现动态数据管理,比如删除记录后刷新表格显示。这里的问题在于,当你直接通过Ajax删除数据并尝试重新加载表格时,DataTable并不会自动更新,而是将新数据...

    多个jquery.datatable共存,checkbox全选异常的快速解决方法

    在使用多个jquery.datatable控件并置入同一个页面的时候,可能会遇到checkbox全选功能异常的问题。具体表现为,当点击全选复选框时,页面上所有的datatable表格的全选复选框都会被选中,而不是仅限于当前操作的表格...

    datatables固定头与滚动条适配文件

    这个问题通常发生在尝试在`DataTables`中同时使用`FixedHeader`插件和滚动功能时遇到的冲突。 首先,我们来了解`DataTables`。它是一个强大的开源库,能够将HTML表格转化为交互式数据视图,提供排序、过滤、分页等...

    bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法

    最后,文章总结了如何使用Bootstrap jQuery dataTable实现表格数据的异步刷新,并鼓励用户对遇到的问题进行提问,以便作者及时回复。同时,作者感谢了用户对网站的支持,这体现了社区互助和分享精神。 综上所述,...

    Datatable导出Html文件

    注意,虽然我们使用了CDN链接,但你也可以将这些库文件下载到本地项目中,以避免网络延迟或不可用的问题。此外,DataTable有许多可配置的参数和扩展,可以根据项目需求进行定制,如自定义导出的样式、格式等。 在...

    jquery滚动

    关于“源码”,在学习和使用jQuery滚动插件时,理解源码可以帮助开发者更好地定制功能或解决遇到的问题。通过查看插件源码,我们可以了解其内部工作原理,比如如何计算滚动速度、如何处理边界条件等。 此外,压缩包...

    jquery组件使用中遇到的问题整理及解决

    tablesorter是一个流行的jQuery插件,用于实现表格排序功能。如果在使用中出现加载失败,例如908行出现异常字符错误,可能是由于编码问题或者源代码中有不被浏览器识别的特殊字符。在这种情况下,删除引起问题的字符...

    jQuery插件dataTables添加序号列的方法

    在使用jQuery插件dataTables时,有时我们需要为表格添加一个序号列,以便更好地展示数据。dataTables是一个强大的JavaScript库,用于将HTML表格转换为高度交互、功能丰富的数据展示工具。在这个教程中,我们将探讨...

    dataTable过滤重复数据并导出word的代码

    标签"dataTable"表明此问题与JavaScript库jQuery DataTables相关,它是一个用于增强HTML表格功能的插件,允许用户进行排序、搜索、分页等操作。在上述代码中,dataTable可能被用于前端展示和初步的数据处理,但主要...

    dataTable.zip

    10. **文档和社区支持**: DataTables有详尽的官方文档和活跃的开发者社区,遇到问题时,可以通过查阅文档或在线寻求帮助来解决问题。 总的来说,"dataTable.zip" 提供了一个集成了Bootstrap样式的自定义DataTable...

    Laravel开发-datatable

    标题中的"Laravel开发-datatable"指的是使用Laravel 4框架来集成和利用DataTables插件,这是一个流行且功能强大的jQuery库,专门用于增强HTML表格的功能。 首先,我们要理解Laravel 4的基础架构。Laravel是一个优雅...

    datatable java web运行demo 包含增删改查

    在Java Web开发中,`Datatable` 是一个广泛使用的JavaScript库,它提供了强大的数据操作和展示功能,尤其在处理服务器端数据分页、排序、过滤等需求时非常实用。本项目是一个`Datatable`与Java后端结合的实战运行...

    asp.net处理不规则表格 结合jquery处理不规则表格

    例如,使用DataTable的NestedView功能可以创建多级表格。 3. **服务器端与客户端交互**: ASP.NET中的服务器控件在回发时会失去状态,因此在处理不规则表格时,可能需要在客户端进行部分操作,以避免不必要的页面...

    jQuery Datatables表头不对齐的解决办法

    在使用jQuery Datatables进行网页数据展示时,可能会遇到表头(thead)与表格内容(tbody)对齐问题,尤其是在浏览器窗口大小变化或者响应式布局中。这个问题通常表现为表头与内容列宽不一致,造成视觉上的错位。...

    Jquery实例打包(很多)

    6. **插件应用**:jQuery拥有丰富的第三方插件,如Bootstrap、DataTable、Validation等,这些插件可以扩展jQuery的功能,实现更复杂的交互和展示效果。 7. **链式操作**:jQuery的方法返回的是jQuery对象本身,这...

    jquery datables

    同时,由于其广泛的社区支持和持续的更新,遇到问题时通常可以找到解决方案或获得帮助,降低了维护成本。因此,掌握jQuery DataTables对于任何涉及大量数据展示和操作的Web开发项目都是极其有价值的。

    jQuery插件DataTables分页开发心得体会

    在本文中,我们将探讨jQuery插件DataTables的分页开发经验。DataTables是一个强大的JavaScript库,用于增强HTML表格,提供高级排序、搜索、过滤和分页功能。在使用DataTables进行分页开发时,通常涉及前端和后端的...

    jQuery表格插件datatables用法总结

    初始化DataTables非常简单,只需要在文档加载完成后,使用jQuery选择表格并调用`.dataTable()`方法即可。此外,还可以通过传递一个选项对象来自定义DataTables的行为,比如分页类型可以设置为"full_numbers",这样...

Global site tag (gtag.js) - Google Analytics