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

jquery table异步加载数据,包括分页,可以自由定制表格样式

阅读更多
//说明:jquery异步加载列表数据,包括分页
//jsp端调用用法:
//<script type="text/javascript">
//           var ctx = "${ctx}";
//           $(document).ready(function(){
//           initTable();
//           });
//
//           function initTable(searchData){
//           var properties = {
//                       divId:'tableContent',
//                       pager:'tablePager',
//                       pageSize:15,
//                       url:ctx + "/system/searchSystemLogList.action",
//                       data:searchData,
//                       colNames:["登录名","类型","IP地址","日志描述","时间"],
//                       colModel:[                             
//                                 {name:'username',width:90,align: 'center'},
//                                 {name:'title',width:120,align: 'center'},
//                                 {name: 'ip', width: 120, align: 'center'},
//                                 {name: 'description',width:200, align: 'left'},
//                                 {name: 'date', width:150,align: 'center'}
//                             ]               
//               };
//
//              jqTable(properties);
//           }
//</script>
// <div id="tableContent"></div>
//<div id="tablePager"></div>

var properties;
var totalPages;
var currentPage;
function jqTable(opts){
    properties = opts;
    var pageSize = opts.pageSize;//每页显示数量
    var pageNo = opts.pageNo;//当前页码
    var tableId = opts.divId;//table表格div ID
    var pager = opts.pager;//tabel 分页div ID
    var url = opts.url; //url
    var data = opts.data;//数据搜索
    var divWidth = opts.width;//表格可视区域宽度
    var divHeight = opts.width;//表格可视区域高度
    var tableColModel = opts.colModel;
    var tableColNames = opts.colNames;//定义表头
    var displayAll = opts.tdDisplayAll;//单元格是否信息是否展示完全
   
    var tableClass = opts.tabelClass;//table表格样式默认值为jqtable
    var trEvenRowColor = opts.evenRowColor;//table偶数行样式,默认值:evenRowColor
    var trOddRowColor = opts.oddRowColor;//table奇数行样式,默认值:oddRowColor
    var trMouseOverColor = opts.mouseOverColor;//table行划过样式,默认值:mouseOverColor
    var trMouseClickColor = opts.mouseClickColor;//table选中行样式,默认值:mouseClickColor
   
   if(isBlank(pageSize)){pageSize = 10;}
   if(isBlank(displayAll)){displayAll = false;}
   if(isBlank(pageNo)){pageNo = 1;}
   //表格行样式调整
   if(isBlank(tableClass)){tableClass = "jqtable";}
   if(isBlank(trEvenRowColor)){trEvenRowColor = "evenRowColor";}
   if(isBlank(trOddRowColor)){trOddRowColor = "oddRowColor";}
   if(isBlank(trMouseOverColor)){trMouseOverColor = "mouseOverColor";}
   if(isBlank(trMouseClickColor)){trMouseClickColor = "mouseClickColor";}
  
   url += "?pagination.pageSize=" + pageSize + "&pagination.pageNo=" + pageNo;
  
   if(!isBlank(data)){url += "&" + data;}
  
  var $table = $("#" + tableId);
  $($table).css("overflow","auto");
  if(!isBlank(divWidth)){$($table).css("width",divWidth);}
  if(!isBlank(divHeight)){$($table).css("height",divHeight);}
  $.getJSON( //使用getJSON方法取得JSON数据
        url,
        function(data){//处理数据 data指向的是返回来的JSON数据
                var tableHtml=""; //表单内容

if(data.title != null && data.title != ""){
tableHtml += "<p class='title'>"+data.title+"</p>";
}
tableHtml += "<table width='100%' class='"+tableClass+"' cellpadding='0' cellspacing='0'><thead><tr>";

var theadTd = "";
for(var i=0;i<tableColNames.length;i++){
theadTd += "<th width="+tableColModel[i].width+">"+tableColNames[i]+"</th>";
}
tableHtml += theadTd + "</tr></thead><tbody>";

               
               
var tableBody="";//定义表单内容
              
                if(data == null || data == "" || data.totalRecords == 0){
                    var tip = "没有查询到数据!";
                    tableBody = "<tr><td colspan='"+tableColNames.length +"'><font color='red'>"+tip+"</font></td></tr>";
                }else{
                //alert("totalRecords:" + data.totalRecords + "  curPage:" + data.curPage + " totalPages:" + data.totalPages);
                $(data.dataRows).each(function(i,tableData){ //遍历JSON数据得到所需形式
                    var trClass = tableData.trColor;//定制每一行显示的显色
                    if(typeof(trClass) != "undefined"){
                         tableBody += "<tr class='"+trClass+"'>";
                    }else{
                         tableBody += "<tr>";
                    }
                                     
for(var j=0;j<tableColModel.length;j++){
                        var tdContent = tableData[tableColModel[j].name];
                        if(tdContent == null || tdContent == "null"){
                            tdContent = "&nbsp;";
                        }
                        if(typeof(tableColModel[j].align) == "undefined"){
                            tableBody += "<td>"+tdContent+"</td>";
                        }else{
                        var newTdContent = tdContent;
                        if(!displayAll){
                        newTdContent = tdContent.length > 45?tdContent.substring(0,45)+"...":tdContent;
                        }
                            tableBody += "<td style='word-break:break-all; word-wrap:break-word;text-align:"+tableColModel[j].align+"' title="+tdContent+">"+newTdContent+"</td>";
                        }
    }
tableBody += "</tr>";
                });
                }
               
tableHtml += tableBody + "</tbody></table>";
                $table.empty();
$table.html(tableHtml);
               
currentPage = data.curPage;
            totalPages = data.totalPages;
var totalCounts = data.totalRecords;
                //改变表格背景颜色
if(totalPages >= 1){
changeTableBackground(tableClass,trEvenRowColor,trOddRowColor,trMouseOverColor,trMouseClickColor);
}
               
               
                //-----------------------------------------------如果不需要分页效果,可以省略此过程---------------------------------------------------
                if(typeof(pager) == "undefined"){
                    return false;
                }
                //构造分页代码
                var $pager = $("#"+pager);
                $($pager).css("overflow","auto");
                $($pager).css("text-align","center");
                if(!isBlank(divWidth)){
                $($pager).css("width",divWidth);
                }
               
                var pagerHtml = "<table cellpadding='0' cellspacing='0' style='margin:auto'><tr><td>";
               
                if(currentPage == 1 || totalCounts <= 0){
                    pagerHtml += "首页&nbsp;&nbsp;上一页&nbsp;&nbsp;";
                }else{
                    pagerHtml += "<a href='###' onclick='firstPage();'>首页</a>&nbsp;&nbsp;<a href='###' onclick='prePage();'>上一页</a>&nbsp;&nbsp;";
                }
               
                if(currentPage == totalPages ||  totalCounts <= 0){
                    pagerHtml += "下一页&nbsp;&nbsp;尾页&nbsp;&nbsp;";
                }else{
                    pagerHtml += "<a href='###' onclick='nextPage();'>下一页</a>&nbsp;&nbsp;<a href='###' onclick='lastPage();'>尾页</a>&nbsp;&nbsp;";
                }
               
                var inputIsDisable = "";
                var countFrom = "";
                if(totalCounts <= 0){
                inputIsDisable = "disabled = 'disabled'";
                }else{
                var dataCounts = (currentPage-1)*pageSize + pageSize;
                countFrom = "&nbsp;&nbsp;第" + ((currentPage-1)*pageSize + 1) + " - " + ( dataCounts >= totalCounts?totalCounts:dataCounts) + "条&nbsp;&nbsp;"
                }
               
                pagerHtml += "当前第<input style='text-align:center' id='searchPageInput' "+ inputIsDisable +" onkeypress='searchPage(event);' type='text' value='"+currentPage+"'/>  页&nbsp;总"+totalPages+"页 &nbsp;"+countFrom+"共 " + totalCounts + "条数据";
               
                pagerHtml +="</td></tr></table>";
               
                $pager.empty();
                $pager.html(pagerHtml);
                //-----------------------------------------------------------------分页代码结束-----------------------------------------------------------
        });
}
//背景色换色
function changeTableBackground(tableClass,trEvenRowColor,trOddRowColor,trMouseOverColor,trMouseClickColor){
    $("." + tableClass).each(function(){
   
    $(this).find("tr:even").addClass(trEvenRowColor);
    $(this).find("tr:odd").addClass(trOddRowColor);
   
        $(this).find("tbody > tr").bind("mouseout",function(){
            $(this).removeClass(trMouseOverColor);
        });

        $(this).find("tbody > tr").bind("mouseover",function(){
            $(this).addClass(trMouseOverColor);
        });

        var tmp;
        $(this).find("tbody > tr").click(function(){
            if(tmp != null){tmp.removeClass(trMouseClickColor);}           
            $(this).addClass(trMouseClickColor);
            tmp = $(this);
        });
    });
}
//首页
function firstPage(){
    properties.pageNo = 1;
    jqTable(properties);
}
//上一页
function prePage(){
    if(currentPage > 1){
         properties.pageNo = currentPage - 1;
         jqTable(properties);
    }
   
}
//下一页
function nextPage(){
    if(currentPage < totalPages){
        properties.pageNo = currentPage + 1;
        jqTable(properties);
    }
}
//尾页
function lastPage(){
     properties.pageNo = totalPages;
    jqTable(properties);  
}
//按给定页码展示数据
function searchPage(event){
    if(event.keyCode==13 || window.event.keyCode == 13)
    {
        var pager = $("#searchPageInput").val();
        if(pager == ""){
            alert("请填写页码");
            return false;
        }
        var reg = /^[1-9]*[1-9][0-9]*$/;
        if(!reg.test(pager)){
            alert("页码位数字,请正确填写页码");
            return false;
        };     
        if(pager < 1 || pager > totalPages){
            alert("页码范围不正确,请正确填写页码");
            return false;
        }      
         properties.pageNo = pager;
         jqTable(properties);  
       
    }
}
//判断字符是否为空
function isBlank(stringVar){
if(typeof(stringVar) == "undefined"|| stringVar == null || stringVar == "" || stringVar == "null"){
return true;
};
}




效果图如下:

  • 大小: 11 KB
1
6
分享到:
评论
1 楼 shanghaiwobama 2012-09-02  
有点复杂啊,网上有些一些不错的插件,你访问:www.ligerui.com 这上面的控件不错的。

相关推荐

    jquery表格插件带分页动态数据表格代码

    在这个“jquery表格插件带分页动态数据表格代码”项目中,我们重点探讨的是如何利用jQuery实现一个功能丰富的表格,包括数据分页和动态加载。 一、jQuery表格插件 表格插件通常是基于jQuery构建的,用于增强HTML...

    jquery.pagination 异步 分页

    ### jQuery Pagination 插件实现异步分页 在Web开发中,为了提高用户体验并减轻服务器负担,异步分页技术被广泛应用。jQuery作为一个流行的JavaScript库,提供了强大的DOM操作能力,结合Ajax可以轻松实现异步加载...

    table 绑定数据 jquery 分页

    通过上述知识点的学习,我们可以了解到如何使用JQuery结合Ajax技术实现Table数据的动态绑定及分页功能。这种方式不仅能够提升用户体验,还能有效减轻服务器压力,是现代Web开发中常用的技术手段之一。在实际项目开发...

    jQuery带分页动态数据表格插件

    通过以上步骤,我们可以创建一个功能完善的jQuery带分页动态数据表格插件。在实际项目中,可能还需要考虑错误处理、数据排序、搜索过滤等功能,以满足更多需求。记住,良好的代码组织和注释也是提高代码可读性和维护...

    jQuery实现Table分页跳转

    1. **自定义样式**:分页插件通常允许自定义样式,你可以根据项目需求定制分页的外观。 2. **缓存与懒加载**:对于大数据量的场景,可以考虑使用前端缓存或懒加载技术,只加载可视区域内的数据,提高页面性能。 3....

    使用AJAX动态生成table表格数据和jquery.pagination.js 的分页栏

    总的来说,使用AJAX和`jquery.pagination.js`可以构建出高效且用户友好的表格数据展示和分页系统。这种技术在处理大量数据时特别有用,因为它避免了全页面刷新,提高了加载速度,同时也提升了用户体验。在实际开发中...

    jQuery不刷新分页动态数据表格代码.zip

    本资源“jQuery不刷新分页动态数据表格代码”是针对网页开发中的一个常见需求——实现数据表格的分页功能,且无需页面整体刷新。这种功能对于提高用户体验至关重要,特别是在处理大量数据时。 首先,我们要理解...

    jQuery表格数据分页插件代码

    在这个"jQuery表格数据分页插件代码"中,我们可以看到一个完整的实现,它允许用户按需加载和浏览数据,优化了用户体验。 1. **jQuery基础**:jQuery是一个广泛使用的JavaScript库,简化了HTML文档遍历、事件处理、...

    jquery table分页插件

    jQuery Table分页插件为开发者提供了便捷的解决方案,它允许用户轻松地在表格中实现动态加载和分页功能。本文将深入探讨jQuery Table分页插件的核心原理、使用方法以及常见应用场景。 ### 一、jQuery Table分页插件...

    jQuery插件PagedTable实现表格分页

    jQuery插件PagedTable是一种广泛使用的前端解决方案,用于在网页上展示大量数据时实现表格的分页功能。这种插件可以极大地提升用户体验,因为它避免了一次性加载所有数据导致页面加载速度变慢的问题。下面我们将深入...

    动态加载树(tree)和动态加载表格(table)

    动态加载树(Tree)和动态加载表格(Table)是两种常见的数据展示方式,它们在网页应用中广泛使用,特别是在需要显示层级结构数据(如组织结构、文件系统)和大量表格数据(如报表、用户列表)的情况下。 **动态...

    jquery动态表格自定义分页.zip

    在本项目中,"jquery动态表格自定义分页.zip"是一个包含使用jQuery和CSS实现动态表格分页功能的示例。下面将详细讲解这个项目的关键知识点: 1. jQuery:jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历...

    jquery 表格 jquery table

    在本篇文章中,我们将深入探讨如何使用 jQuery 实现功能丰富的表格,包括数据加载、排序、过滤和分页等。 首先,创建一个基本的 HTML 表格结构是至关重要的。HTML `&lt;table&gt;` 元素提供了构建表格的基础框架,包括 `...

    jquery+ajax实现的表单分页,页面复杂表单数据的加载

    在"LoadTable.js"这个文件中,很可能包含了使用jQuery进行数据加载和分页的相关功能。 Ajax(Asynchronous JavaScript and XML)是异步的JavaScript和XML技术,它允许网页在不刷新整个页面的情况下与服务器进行通信...

    EasyuiTabs异步加载页面

    `Table.aspx` 文件可能是用于展示表格数据的页面,可能包含 HTML、CSS 和 JavaScript 代码,用于生成和操作数据。由于我们没有具体的 `Table.aspx` 内容,这里只能假设它是一个用于展示数据的页面,比如使用了 ...

    基于jquery的表格筛选,排序,分页js

    在网页开发中,jQuery是一...在实际项目中,还可以结合Ajax异步加载数据,进一步提升性能和用户体验。在提供的`test.html`和`js`文件中,你可以找到具体的实现代码,通过学习和理解,可以加深对这些功能的理解和应用。

    jquery uI TABLE

    在Web开发中,表格是展示数据的常见方式,jQuery UI Table通过提供可定制的样式和交互功能,使得网页表格更加美观且用户友好。本篇文章将深入探讨jQuery UI Table的核心特性、使用方法以及实际应用中的技巧。 首先...

    动态加载bootstrap表格数据

    这包括`&lt;table&gt;`标签,`&lt;thead&gt;`用于定义表头,`&lt;tbody&gt;`用于放置表格内容。表格的每一行数据应表示为`&lt;tr&gt;`,每个单元格(cell)则是`&lt;td&gt;`或`&lt;th&gt;`。 2. **JavaScript库**:Bootstrap本身并不直接支持动态加载...

    jQuery客户端表格分页显示

    jQuery作为一款广泛使用的JavaScript库,提供了丰富的功能,包括处理DOM操作、事件处理、动画效果等,同时也适用于客户端表格分页显示,极大地提高了用户体验,避免了频繁的服务器请求,实现了无刷新分页。...

    js分页表格

    Bootstrap框架因其简洁、易用的样式设计而被广泛应用,它提供了丰富的UI组件,包括表格和分页。在这个项目中,我们看到的是一个利用JavaScript实现的、具有Bootstrap风格的分页表格,它允许后台直接传递数据列表,...

Global site tag (gtag.js) - Google Analytics