基于jQuery ligerUI实现分页样式

 更新时间:2016年09月18日 14:38:45   作者:pokid  
这篇文章主要为大家详细介绍了基于jQuery ligerUI实现分页样式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

在公司实习看到公司框架里使用了ligerUI的grid进行分页,个人感觉挺好用的,自己摸索着实现了一遍记录下来 

简单来说,liger grid 就是提交准备好的数据到指定的目标请求数据,拿到数据以后,显示出来(通过ajax实现)。 

ligerGrid是ligerui系列插件的核心控件,用户可以快速地创建一个美观,而且功能强大的表格,支持排序、分页、多表头、固定列等等。 

这里只实现基于ligerUI的分页 

LigerUI的分页方式有两种:localserver

如果数据量不是很大,就直接采用local分页,一次性的把数据全部发送到前台来,之后LigerUI自身的grid会自动分页。说一下 total,在后台传送jsonString时传送定义好的total(总条数),你可以定义多少都可以,但是到前台它会自动将总条数赋值给total, 这是local下的方式。 

而如果数据量很大,一次性加载直接不显示数据或反应很慢的,就需要用server分页了,当用server分页时,每次请求都会比local时多发送两个参数:page和pagesize,不需要自己去发送,只需要在后台获取就行。 

int page=Integer.parseInt(request.getParameter("page")); 
int pagesize=Integer.parseInt(request.getParameter("pagesize")); 
int total; 

这时你可以把page和pagesize写进你的sql语句: 
sql="........."; 
sql+=" limit "+(page*pagesize-pagesize)+","+pagesize; 

这样查出的结果放入jsonString中,这里要注意total了,total需要自己定义,需要自己重新查一下结果的总条数后赋值给total传到页面,其他的LigerUI会帮你搞定! 

关于更多的ligerUI grid参官网考API  http://api.ligerui.com/?to=grid
关于选择前端分页还是后台分页参考https://www.jb51.net/article/86326.htm

local实现只需要将查询的数据全部提交到前端框架会自动帮你实现分页,但是我个人并不提倡进行客户端分页,Web应用服务器和客户端之间是网络,如果网络传递的数据量越少,则客户端获得响应的速度越快.而且一般来说,数据库服务器和Web应用服务器的处理能力一般比客户端要强很多.从这两点来看,在客户端分页的方案是最不可取的 

下面上server端分页代码:

由于只使用了分页所以只导入了部分插件和图片

 

引入需要的jquery,liger和css 

<link href="js/ligerui-all.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="js/jquery-3.0.0.js"></script>
<script type="text/javascript" src="js/ligerui.all.js"></script> 


jsp中样例如下:在ligerGrid中需要指定dataAction(默认是local),请求的url,page和pageSize,其中page和pageSize可以在后台获取 

<script type="text/javascript" >
$(function(){

 var grid = $("#maingrid").ligerGrid({
  columns: [
  { name: 'id', display: '序号',
   render:function(record, rowindex, value, column){
    return rowindex+1;

   }

  },

  { name: 'title', display: '标题'}
  ],
  height:210,
  dataAction:"server",
  url:"LUServlet",
  page:"1",
  pageSize:"5"

  });

});
</script>
</head>
<body>
<div style="width:600px">
<div id="maingrid"></div>
</div>

model类和测试数据库 

//为了省事用sql.Date
import java.sql.Date;
public class Blog {
 private int id;
 private int category_id;
 private String title;
 private String content;
 private Date created_time;
 //getter和setter方法
 @Override
 public String toString() {
  return "Blog [id=" + id + ", category_id=" + category_id + ", title=" + title + ", content=" + content
    + ", created_time=" + created_time + "]";
 }
 
}

dao类,用jdbc测试 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import model.Blog;

public class MysqlTest {
 PreparedStatement ps = null;
 ResultSet rs = null;
 Connection connect = null;

 public MysqlTest() {
  try {
   Class.forName("com.mysql.jdbc.Driver");
   connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/blogs_stu", "root", "");
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 //返回一个Blog数组,用于拼接json字符串
 //不用model时可以直接在此处拼接json字符串返回
 //传入page和pagesize用于判断最后一页数组长度,否则会报错
 public Blog[] getInfo(String sql,int page,int pagesize) {
  int total=getTotal();
  if(page*pagesize>=total){
   pagesize=total%pagesize;
  }
  Blog[] blog = new Blog[pagesize];
  try {
   ps = connect.prepareStatement(sql);
   rs = ps.executeQuery();
   int index=0;
   while (rs.next()) {
    blog[index]=new Blog();
    blog[index].setId(rs.getInt("id"));
    blog[index].setCategory_id(rs.getInt("category_id"));
    blog[index].setTitle(rs.getString("title"));
    blog[index].setContent(rs.getString("content"));
    blog[index].setCreated_time(rs.getDate("created_time"));
    index++;
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (connect != null)
    try {
     connect.close();
     ps.close();
     rs.close();
    } catch (SQLException e) {
     e.printStackTrace();
    }
  }
  return blog;
 }
 //获取总记录数total
 public int getTotal(){
  int total=0;
  String sql="";
   try {
    sql="select count(id) from blog";
    ps = connect.prepareStatement(sql);
    rs = ps.executeQuery();
    while(rs.next()){
    total=rs.getInt(1);
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }
   return total;
  }
}

后台servlet实现 

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.Blog;
import mysqljdbc.MysqlTest;

@WebServlet("/LUServlet")
public class LUServlet extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  request.setCharacterEncoding("utf-8");
  response.setContentType("text/html; charset=utf-8");
  //获取页面的page和pagesize,拼接sql用
  int page=Integer.valueOf(request.getParameter("page"));
  int pagesize=Integer.valueOf(request.getParameter("pagesize"));
  
  MysqlTest test=new MysqlTest();
  //在拼接json字符串是传给前台一个total记录总数,ligerUI grid会自动获取该total
  int total=test.getTotal();
  request.setAttribute("total", total);
  //用的mysql,查找限定条数语句用limit,从page*pagesize-pagesize开始,取pagesize条
  String sql="select * from blog";
  sql+=" limit "+(page*pagesize-pagesize)+","+pagesize;
  Blog[] blog=test.getInfo(sql,page,pagesize);
  //将数据拼接成json字符串
  StringBuffer strbuffer=new StringBuffer();
  //ligerUI grid接受的json格式是{"Rows":[],"Total":""}
  strbuffer.append("{\"Rows\":[");
  for(int i=0;i<blog.length;i++){
   strbuffer.append("{\"title\":").append("\"" + blog[i].getTitle() + "\"},");
  }
  strbuffer.replace(strbuffer.length()-1, strbuffer.length(), "");
  strbuffer.append("],").append("\"Total\":").append("\""+total+"\"").append("}");
  PrintWriter out=response.getWriter();
  out.write(strbuffer.toString());
  out.close();
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  doGet(request,response);
 }
}

运行结果(默认样式可以改,具体参照ligerUI API):

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • jquery实现图片预加载

    jquery实现图片预加载

    这篇文章主要介绍了jquery实现图片预加载的方法,内容很详细,带领大家全方位学习jquery图片预加载,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • jQuery复制表单元素附源码分享效果演示

    jQuery复制表单元素附源码分享效果演示

    当我们遇到提交表单时,需要我们重复添加好几个表单,在订单表格中添加多个不同型号的产品信息。这个时候有复制表单表单按钮,也就是新增一项,通过点击复制按钮来实现新增一项,怎么实现的呢?下面小编跟大家分享,需要的朋友的朋友可以参考下
    2015-09-09
  • jquery使整个div区域可以点击的方法

    jquery使整个div区域可以点击的方法

    这篇文章主要介绍了jquery使整个div区域可以点击的方法,涉及jQuery操作页面元素与鼠标事件的技巧,需要的朋友可以参考下
    2015-06-06
  • 一文带你详细了解jQuery

    一文带你详细了解jQuery

    jQuery是一个JavaScript库,它简化了客户端JavaScript编程的过程,特别是针对HTML文档遍历和操作、事件处理、动画效果和Ajax操作。感兴趣的小伙伴可以参考阅读
    2023-04-04
  • jquery动态加载图片数据练习代码

    jquery动态加载图片数据练习代码

    这里我只是随便做了下,上面是照片列表和两个按钮,单击小图片下面显示大图片,当点击按钮时可以查看下一页,上一页的图片。
    2011-08-08
  • jQuery 获取与设置元素属性的详细方法(看完这篇文章就搞明白了)

    jQuery 获取与设置元素属性的详细方法(看完这篇文章就搞明白了)

    这篇文章带领大家熟练掌握 jQuery 的属性方面的操作,包括固有属性的获取与设置,自定义属性的获取与设置等等,走进 jQuery 的更深层次阶段,这也是脚本之家小编发现的一篇比较实用的文章
    2023-06-06
  • jQuery实现Ajax聊天机器人完成案例

    jQuery实现Ajax聊天机器人完成案例

    从微信开发的时候,有了一个与人对话的机器人之后,本文主要实现jQuery实现Ajax聊天机器人完成案例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • JQuery实现当鼠标停留在某区域3秒后自动执行

    JQuery实现当鼠标停留在某区域3秒后自动执行

    这篇文章主要介绍了JQuery实现当鼠标停留在某区域3秒后自动执行,可以应用于很多场景,需要的朋友可以参考下
    2014-09-09
  • jQuery表单设置值的方法

    jQuery表单设置值的方法

    这篇文章主要为大家详细介绍了jQuery表单设置值的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • jQuery实现个性翻牌效果导航菜单的方法

    jQuery实现个性翻牌效果导航菜单的方法

    这篇文章主要介绍了jQuery实现个性翻牌效果导航菜单的方法,实例分析了jQuery操作animate、css及鼠标事件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03

最新评论