jqGrid:强大的表格插件的应用

jerry JQuery 2015年08月20日 收藏

jqGrid是一款基于jQuery的功能强大的表格插件,使用jqGrid可以轻松实现前端页面与后台数据进行ajax异步通信,jqGrid运行速度相当快,可以很好的应用在一些后台管理系统来管理大量数据的场合。

查看演示

jqGrid特性:

  • 基于jquery UI主题,开发者可以根据客户要求更换不同的主题。
  • 兼容目前所有流行的web浏览器。
  • Ajax分页,可以控制每页显示的记录数。
  • 支持XML,JSON,数组形式的数据源。
  • 提供丰富的选项配置及方法事件接口。
  • 支持表格排序,支持拖动列、隐藏列。
  • 支持滚动加载数据。
  • 支持实时编辑保存数据内容。
  • 支持子表格及树形表格。
  • 支持多语言。
  • 最关键目前是免费的。

如何使用jqGrid

1、首先,您需要到jqGrid官网下载最新版本的程序包,您可以从这里下载:com/blog/

2、在WEB目录下分别新建css和js两个文件夹,放置相关的css和js文件,创建一个index.html页面文件,用你喜欢的文本编辑器打开,录入一下代码:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "org/TR/xhtml1/DTD/
  2. xhtml1-transitional.dtd">
  3. <html xmlns="org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>Grid</title>
  7. <link rel="stylesheet" type="text/css" href="css/ui-lightness/jquery-ui-1.8.2.custom.css" />
  8. <link rel="stylesheet" type="text/css" href="css/ui.jqgrid.css" />
  9. <script src="js/jquery.js" type="text/javascript"></script>
  10. <script src="js/i18n/grid.locale-cn.js" type="text/javascript"></script>
  11. <script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>
  12. </head>
  13. <body>
  14. ...
  15. </body>
  16. </html>

3、在body中加入以下代码:

  1. <table id="list"></table>
  2. <div id="pager"></div>

#list用来加载数据列表,#page用来显示分页条的。

4、调用jqGrid插件,在页面中加入如下js代码

  1. $("#list").jqGrid({
  2. caption: '手机产品列表',
  3. url:'server.php',
  4. datatype: "json",
  5. colNames:['编号','名称','主屏尺寸','操作系统','电池容量', '价格(¥)','操作'],
  6. colModel:[
  7. {name:'sn',index:'sn', width:80,align:'center'},
  8. {name:'title',index:'title', width:180},
  9. {name:'size',index:'size', width:120},
  10. {name:'os',index:'os', width:120},
  11. {name:'charge',index:'charge', width:100,align:'center'},
  12. {name:'price',index:'price', width:80,align:'center'},
  13. {name:'opt',index:'opt', width:80, sortable:false, align:'center'}
  14. ],
  15. rowNum:10,
  16. rowList:[10,20,30],
  17. pager: '#pager',
  18. sortname: 'id',
  19. autowidth: true,
  20. height:280,
  21. viewrecords: true,
  22. multiselect: true,
  23. multiselectWidth: 25,
  24. sortable:true,
  25. sortorder: "asc"
  26. });

这个时候我们预览index.html发现表格外形已经呈现,就差数据填充了。如果此时你还看不到任何效果,请检查你的文件路径是否正确。

5、加载数据。

我们采用php读取mysql数据,返回json格式的数据给jqGrid来显示数据。我们准备一张数据表用来记录手机产品信息,结构如下:

  1. CREATE TABLE IF NOT EXISTS `products` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `sn` varchar(10) NOT NULL,
  4. `title` varchar(60) NOT NULL,
  5. `size` varchar(30) NOT NULL,
  6. `os` varchar(50) NOT NULL,
  7. `charge` varchar(50) DEFAULT NULL,
  8. `screen` varchar(50) DEFAULT NULL,
  9. `design` varchar(50) DEFAULT NULL,
  10. `price` int(10) NOT NULL,
  11. `addtime` datetime NOT NULL
  12. PRIMARY KEY (`id`)
  13. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

接着,在server.php中读取数据,并输出json数据:

  1. //连接数据库
  2. include_once ('connect.php');
  3. $page = $_GET['page'];
  4. $limit = $_GET['rows'];
  5. $sidx = $_GET['sidx'];
  6. $sord = $_GET['sord'];
  7. if (!$sidx)
  8. $sidx = 1;
  9. $result = mysql_query("SELECT COUNT(*) AS count FROM products where deleted=0");
  10. $row = mysql_fetch_array($result, MYSQL_ASSOC);
  11. $count = $row['count'];
  12. if ($count > 0) {
  13. $total_pages = ceil($count / $limit);
  14. } else {
  15. $total_pages = 0;
  16. }
  17. if ($page > $total_pages)
  18. $page = $total_pages;
  19. $start = $limit * $page - $limit;
  20. $SQL = "SELECT * FROM products WHERE deleted=0 ORDER BY $sidx $sord LIMIT $start , $limit";
  21. $result = mysql_query($SQL) or die("Couldn t execute query." . mysql_error());
  22. $responce->page = $page;
  23. $responce->total = $total_pages;
  24. $responce->records = $count;
  25. $i = 0;
  26. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  27. $responce->rows[$i]['id'] = $row[id];
  28. $opt = "<a href='edit.php'>修改</a>";
  29. $responce->rows[$i]['cell'] = array (
  30. $row[sn],
  31. $row[title],
  32. $row[size],
  33. $row[os],
  34. $row[charge],
  35. $row[price],
  36. $opt
  37. );
  38. $i++;
  39. }
  40. echo json_encode($responce);

至此,如果你往数据表中录入数据后,就可以在页面上显示数据表了,然后你可以排序、分页操作了。接下来我会将jqGrid的选项说明整理成文,分享给大家,然后从项目实际应用出发,举例讲解增加删除、查看、查找数据等业务的应用。