基于jQuery ligerUI实现分页样式

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

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

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

这里只实现基于ligerUI的分页

LigerUI的分页方式有两种:

local

server

如果数据量不是很大,就直接采用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 关于选择前端分页还是后台分页参考

local

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

下面上server端分页代码

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

引入需要的jquery,liger和css

rush:xhtml;">

model类和测试数据库

rush:java;"> //为了省事用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测试

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实现

<div class="jb51code">
<pre class="brush:java;">
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,从pagepagesize-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,IOException {
doGet(request,response);
}
}

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

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

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: &lt;span id=&quot...
jQuery 添加水印 &lt;script src=&quot;../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...