Jqgrid安装(第一个Grid-xml)

前端之家收集整理的这篇文章主要介绍了Jqgrid安装(第一个Grid-xml)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1.  

开始学习Jqgrid,记录学习的点点滴滴,大牛勿喷。

一、下载Jqgrid和UI theme:

Jqgrid下载地址:http://www.trirand.com/blog/?page_id=6 (说明:本文是基于Jqgrid3.6.5)

UI theme下载地址:http://jqueryui.com/download/ (说明:本文是基于Jquery UI -1.10.2)

二、安装:

步骤一:解压上述两个压缩包。

步骤二:在Web目录下创建一个文件夹用来放置jqgrid文件,例如:jqgrid。

步骤三:在jqgrid文件夹下,创建js文件夹和css文件夹。

步骤四:将jqgrid压缩包中的css文件夹下的ui.jqgrid.css文件复制到项目的css文件夹中;

将jqgrid压缩包中的js文件夹下所有文件复制到项目的js文件夹中。

步骤五:将jquery-ui-1.10.2压缩包中css文件夹下的ui-lightness文件夹复制到项目的css文件夹下。

此时目录为:

三、创建第一个Grid:

  1. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <Meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>my firstGrid</title> <link rel="stylesheet" type="text/css" media="screen" href="jqgrid/css/ui-lightness/jquery-ui-1.10.2.custom.css" /> <!-- 加载用户UI主题 -->
  7. <link rel="stylesheet" type="text/css" media="screen" href="jqgrid/css/ui.jqgrid.css" /> <!-- 加载jqgrid样式 -->
  8. <script src="jqgrid/js/jquery-1.4.2.min.js" type="text/javascript"></script> <!-- 加载jquery -->
  9. <script src="jqgrid/js/i18n/grid.locale-cn.js" type="text/javascript"></script> <!-- 加载jqgrid语言文件 (必须在jqgrid文件之前加载)-->
  10. <script src="jqgrid/js/jquery.jqGrid.min.js" type="text/javascript"></script> <!-- 加载jqgrid文件 --> <!-- 统一字体和格式(推荐) -->
  11. <style>
  12. html,body {
  13. margin: 0;
  14. padding: 0;
  15. font-size: 75%;
  16. }
  17. </style>
  18. <script type="text/javascript">
  19. jQuery(document).ready(function(){
  20. jQuery("#list").jqGrid({
  21. url:'jqgrid_xml.do',datatype: 'xml',mtype: 'GET',colNames:['id','name','sex','mail','qq','tel','birthday'],colModel :[
  22. {name:'id',index:'id',width:55},{name:'name',index:'name',width:90},{name:'sex',index:'sex',width:80,align:'right'},{name:'mail',index:'mail',{name:'qq',index:'qq',{name:'tel',index:'tel',{name:'birthday',index:'birthday',width:150,sortable:false}
  23. ],pager: '#pager',rowNum:5,rowList:[5,10,20,30],sortname: 'id',sortorder: 'desc',viewrecords: true,caption: 'My first grid'
  24. }).navGrid("#pager",{
  25. edit : true,add : true,del : true,search : true,refresh : true
  26. });
  27. });
  28. </script>
  29. </head>
  30. <body>
  31. <table id="list"></table>
  32. <div id="pager"></div>
  33. </body>
  34. </html>


四、创建表,根据以上colNames中的字段。(注意要在项目中加入jdbc包)

五、以xml的格式在grid中显示数据库中数据。

1、创建User实体类

  1. package entity;
  2.  
  3. import java.util.Date;
  4.  
  5. public class User {
  6. private int id;
  7. private String name;
  8. private String sex;
  9. private String mail;
  10. private int qq;
  11. private int tel;
  12. private Date birthday;
  13. public int getTel() {
  14. return tel;
  15. }
  16. public void setTel(int tel) {
  17. this.tel = tel;
  18. }
  19. public int getId() {
  20. return id;
  21. }
  22. public void setId(int id) {
  23. this.id = id;
  24. }
  25. public String getName() {
  26. return name;
  27. }
  28. public void setName(String name) {
  29. this.name = name;
  30. }
  31. public String getSex() {
  32. return sex;
  33. }
  34. public void setSex(String sex) {
  35. this.sex = sex;
  36. }
  37. public String getMail() {
  38. return mail;
  39. }
  40. public void setMail(String mail) {
  41. this.mail = mail;
  42. }
  43. public int getQq() {
  44. return qq;
  45. }
  46. public void setQq(int qq) {
  47. this.qq = qq;
  48. }
  49. public Date getBirthday() {
  50. return birthday;
  51. }
  52. public void setBirthday(Date birthday) {
  53. this.birthday = birthday;
  54. }
  55. }

2、创建JqgridDao类操作数据库

  1. package dao;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.sqlException;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10.  
  11. import entity.User;
  12.  
  13. public class JqgridDao {
  14. protected Connection conn = null;
  15. protected PreparedStatement pstmt = null;
  16. protected ResultSet res = null;
  17. private String driver = "oracle.jdbc.driver.OracleDriver";
  18. private String user = "system";
  19. private String password = "ok";
  20. private String url = "jdbc:oracle:thin:@localhost:1521:orcl";
  21. public void openCon(){
  22. try {
  23. Class.forName(driver);
  24. conn = DriverManager.getConnection(url,user,password);
  25. } catch (ClassNotFoundException e) {
  26. // TODO Auto-generated catch block
  27. e.printStackTrace();
  28. } catch (sqlException e) {
  29. // TODO Auto-generated catch block
  30. e.printStackTrace();
  31. }
  32. }
  33. public void closeCon(){
  34. try {
  35. if(res != null){
  36. res.close();
  37. }
  38. if(pstmt != null){
  39. pstmt.close();
  40. }
  41. if(conn != null){
  42. conn.close();
  43. }
  44. } catch (sqlException e) {
  45. // TODO Auto-generated catch block
  46. e.printStackTrace();
  47. }
  48. }
  49. /**
  50. * 获取User表分页数据
  51. * @return
  52. */
  53. public List<User> getAll(int max,int min,String orderName,String order){
  54. List<User> list = new ArrayList<User>();
  55. this.openCon();
  56. //String sql = "select * from (select rownum rn,u.* from users u order by ?,?) where rn>=? and rn<=?";
  57. String sql = "select * from (select rownum rn,u.* from (select * from users order by ?,?) u ) where rn>=? and rn<=?";
  58. try {
  59. pstmt = conn.prepareStatement(sql);
  60. pstmt.setString(1,orderName);
  61. pstmt.setString(2,order);
  62. pstmt.setInt(3,min);
  63. pstmt.setInt(4,max);
  64. res = pstmt.executeQuery();
  65. while(res.next()){
  66. User user = new User();
  67. user.setId(res.getInt("id"));
  68. user.setMail(res.getString("mail"));
  69. user.setName(res.getString("name"));
  70. user.setQq(res.getInt("qq"));
  71. user.setTel(res.getInt("tel"));
  72. user.setSex(res.getString("sex"));
  73. user.setBirthday(res.getDate("birthday"));
  74. list.add(user);
  75. }
  76. } catch (sqlException e) {
  77. // TODO Auto-generated catch block
  78. e.printStackTrace();
  79. }
  80. this.closeCon();
  81. return list;
  82. }
  83. /**
  84. * 获取User表总记录数
  85. * @return
  86. */
  87. public int getCount(){
  88. this.openCon();
  89. int count = 0 ;
  90. String sql = "select count(*) from users";
  91. try {
  92. pstmt = conn.prepareStatement(sql);
  93. res = pstmt.executeQuery();
  94. while(res.next()){
  95. count = res.getInt(1);
  96. }
  97. } catch (sqlException e) {
  98. // TODO Auto-generated catch block
  99. e.printStackTrace();
  100. }
  101. this.closeCon();
  102. return count;
  103. }
  104. }


3、创建并配置一个Servlet:

  1. package servlet;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.util.List;
  6.  
  7. import javax.servlet.ServletException;
  8. import javax.servlet.annotation.WebServlet;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12.  
  13. import dao.JqgridDao;
  14. import entity.User;
  15.  
  16. /**
  17. * Servlet implementation class JqgridServlet
  18. */
  19. @WebServlet("/JqgridServlet")
  20. public class JqgridServlet extends HttpServlet {
  21. private static final long serialVersionUID = 1L;
  22. /**
  23. * @see HttpServlet#HttpServlet()
  24. */
  25. public JqgridServlet() {
  26. super();
  27. // TODO Auto-generated constructor stub
  28. }
  29.  
  30. /**
  31. * @see HttpServlet#doGet(HttpServletRequest request,HttpServletResponse response)
  32. */
  33. protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
  34. this.doPost(request,response);
  35. }
  36.  
  37. /**
  38. * @see HttpServlet#doPost(HttpServletRequest request,HttpServletResponse response)
  39. * 获取数据库数据
  40. */
  41. protected void doPost(HttpServletRequest request,IOException {
  42. response.setCharacterEncoding("utf-8");
  43. //获取jqgrid传过来的参数
  44. int page = Integer.parseInt(request.getParameter("page"));//得到请求的页数,默认为1
  45. int rows = Integer.parseInt(request.getParameter("rows"));//得到想要每页显示的行数
  46. String sidx = request.getParameter("sidx");//排序的列名
  47. String sord = request.getParameter("sord");//升序还是降序(asc or desc)
  48. //设置分页参数
  49. int min = (page-1) * rows + 1;
  50. int max = page * rows;
  51. JqgridDao jqDao = new JqgridDao();
  52. List list = jqDao.getAll(max,min,sidx,sord);
  53. //计算总页数
  54. int count = jqDao.getCount();
  55. int total = count % rows == 0 ? count/rows : count/rows + 1;
  56. //拼接xml
  57. StringBuffer result = new StringBuffer("<?xml version='1.0' encoding='utf-8'?>");
  58. result.append("<rows>");
  59. result.append("<page>"+page+"</page>");//当前页
  60. result.append("<total>"+total+"</total>");//总页数
  61. result.append("<records>"+count+"</records>");//总记录数
  62. for (int i = 0; i < list.size(); i++) {
  63. User user = (User) list.get(i);
  64. result.append("<row id='"+user.getId()+"'>");
  65. result.append("<cell>"+user.getId()+"</cell>");
  66. result.append("<cell>"+user.getName()+"</cell>");
  67. result.append("<cell>"+user.getSex()+"</cell>");
  68. result.append("<cell>"+user.getMail()+"</cell>");
  69. result.append("<cell>"+user.getQq()+"</cell>");
  70. result.append("<cell>"+user.getTel()+"</cell>");
  71. result.append("<cell>"+user.getBirthday()+"</cell>");
  72. result.append("</row>");
  73. }
  74. result.append("</rows>");
  75. PrintWriter out = response.getWriter();
  76. out.print(result.toString());
  77. }
  78.  
  79. }


在web.xml中配置

  1. <servlet>
  2. <servlet-name>jqgridServlet</servlet-name>
  3. <servlet-class>servlet.JqgridServlet</servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6. <servlet-name>jqgridServlet</servlet-name>
  7. <url-pattern>/jqgrid_xml.do</url-pattern>
  8. </servlet-mapping>

六、第二种xml配置(拼接xml的方式不同):

1、jsp:


  1. <%@ page language="java" contentType="text/html; charset=utf-8"
  2. pageEncoding="utf-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <Meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  7. <title>my firstGrid</title>
  8.  
  9.  
  10. <!--------------------------- 普通版本的配置------------------------------------>
  11. <link rel="stylesheet" type="text/css" media="screen" href="jqgrid/css/ui-lightness/jquery-ui-1.10.2.custom.css" /> <!-- 加载用户UI主题 -->
  12. <link rel="stylesheet" type="text/css" media="screen" href="jqgrid/css/ui.jqgrid.css" /> <!-- 加载jqgrid样式 -->
  13. <script src="jqgrid/js/jquery-1.4.2.min.js" type="text/javascript"></script> <!-- 加载jquery -->
  14. <script src="jqgrid/js/i18n/grid.locale-cn.js" type="text/javascript"></script> <!-- 加载jqgrid语言文件 (必须在jqgrid文件之前加载)-->
  15. <script src="jqgrid/js/jquery.jqGrid.min.js" type="text/javascript"></script> <!-- 加载jqgrid文件 -->
  16. <!-- 统一字体和格式(推荐) -->
  17. <style>
  18. html,body {
  19. margin: 0;
  20. padding: 0;
  21. font-size: 75%;
  22. }
  23. </style>
  24.  
  25.  
  26. <script type="text/javascript">
  27. // 设置全局属性(隔行换色)
  28. jQuery.extend(jQuery.jgrid.defaults,{ altRows:true });
  29. </script>
  30.  
  31. <script type="text/javascript">
  32. jQuery(document).ready(function(){
  33. jQuery("#list").jqGrid({
  34. url:'jqgrid_xml2.do',//返回数据的类型
  35. mtype: 'GET',//get or post
  36. colNames:['id',colModel :[
  37. {
  38. name:'id',//name不一定要和表名相同
  39. index:'id',//?
  40. xmlmap : 'id',//设置得到数据的字段名称(注:Jqgrid先识别'xmlmap',如果未设置xmlmap,则识别name;前提是xmlReader中的repeatitems设置为'false')
  41. width:55,align:'center',//align:对齐方式
  42. sortable:false //sortable:点击该列是否能排序
  43. },width:90,align:'center'},},sortable:false,align:'center'}
  44. ],altRows:false,//取消斑马纹(隔行换色),注:覆盖了全局设置
  45. pager: '#pager',//设置导航栏
  46. rowNum:5,//每页显示的行数
  47. rowList:[5,//每页显示的行数(可在前台更改)
  48. sortname: 'id',//排序的列名(初始时)
  49. sortorder: 'desc',//排序的方式
  50. viewrecords: true,//是否可以看到总记录
  51. caption: 'My first grid',//设置标题栏,不设标题栏将不可见
  52. xmlReader : {
  53. root : 'rows',//根节点
  54. row : 'row',//行节点(必须是根节点的子节点)
  55. page : 'page',//当前页
  56. total : 'total',//总页数
  57. records : 'records',//总记录数
  58. repeatitems : false,//!此时应设为false,并且没有cell属性
  59. id : '[id]'//?
  60. //id : '[id]',行中的id属性
  61. }
  62. }).navGrid("#pager",{
  63. edit : true,refresh : true
  64. });
  65. });
  66. </script>
  67. </head>
  68.  
  69.  
  70. <body>
  71. <table id="list"></table>
  72. <div id="pager"></div>
  73. </body>
  74. </html>


2、Servlet:

  1. package servlet;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.util.List;
  6.  
  7. import javax.servlet.ServletException;
  8. import javax.servlet.annotation.WebServlet;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12.  
  13. import dao.JqgridDao;
  14. import entity.User;
  15.  
  16. /**
  17. * Servlet implementation class JqgridServlet
  18. */
  19. @WebServlet("/JqgridServlet")
  20. public class Servlet4Xml2 extends HttpServlet {
  21. private static final long serialVersionUID = 1L;
  22. /**
  23. * @see HttpServlet#HttpServlet()
  24. */
  25. public Servlet4Xml2() {
  26. super();
  27. // TODO Auto-generated constructor stub
  28. }
  29.  
  30. /**
  31. * @see HttpServlet#doGet(HttpServletRequest request,sord);
  32. //计算总页数
  33. int count = jqDao.getCount();
  34. int total = count % rows == 0 ? count/rows : count/rows + 1;
  35. //拼接xml
  36. StringBuffer result = new StringBuffer("<?xml version='1.0' encoding='utf-8'?>");
  37. result.append("<rows>");
  38. result.append("<page>"+page+"</page>");//当前页
  39. result.append("<total>"+total+"</total>");//总页数
  40. result.append("<records>"+count+"</records>");//总记录数
  41. //拼接的格式与Grid4Xml1不同(cell换成字段名称作为标签名称)
  42. for (int i = 0; i < list.size(); i++) {
  43. User user = (User) list.get(i);
  44. result.append("<row id='"+user.getId()+"'>");
  45. result.append("<id>"+user.getId()+"</id>");
  46. result.append("<name>"+user.getName()+"</name>");
  47. result.append("<sex>"+user.getSex()+"</sex>");
  48. result.append("<mail>"+user.getMail()+"</mail>");
  49. result.append("<qq>"+user.getQq()+"</qq>");
  50. result.append("<tel>"+user.getTel()+"</tel>");
  51. result.append("<birthday>"+user.getBirthday()+"</birthday>");
  52. result.append("</row>");
  53. }
  54. result.append("</rows>");
  55. PrintWriter out = response.getWriter();
  56. out.print(result.toString());
  57. }
  58.  
  59. }

其他不做改变。

猜你在找的XML相关文章