jqGrid简单示例

2013年5月31日 | 分类: 操作系统, 编程技术 | 标签:

有时候后端有些数据需要进行展现,如果写html的td/tr什么的,比较费时费劲,而且通用性不强,下面就介绍一下jqgrid的使用,能够快速搭建一个表格,进行数据的展现和排序等基本操作。

jqgrid是jquery的表格插件,jqgrid可以从后台获取数据,数据格式支持json,xml,array等,jqGrid是典型的B/S架构,服务器端只是提供数据管理,客户端只提供数据显示。jqGrid是用ajax来实现对请求与响应的处理。jqgrid的效果如下:

jq

更多demo参见:http://www.trirand.com/blog/jqgrid/jqgrid.html

jqgrid的安装

 

1.下载资源,因为jqgrid是基于jquery的,因此需要引入jquery的一些js文件

jqgrid下载:http://www.trirand.com/blog/?page_id=6,全部加载,直接download即可

jquery ui下载:http://download.jqueryui.com/download,选择最新版本即可

2.解压到一个目录,此时包含2个文件夹:jqgrid和jquery-ui,具体版本每次可能不太一样

3.部署到web服务器下,在http服务器下,新建一个目录mysite,里面创建2个文件夹css和js,然后拷贝文件:

将jqgrid/css/ui.jqgrid拷贝到mysite/css/ui.jqgrid

将jqgrid/js/的所有文件拷贝到mysite/js/下面

将jquery-ui/css/ui-lightness目录拷贝到mysite/css/ui-lightness

此时mysite的目录结构应该是:

+css

—-ui-lightness

—-ui.jqgrid.css

+js

—-i18n

—-jquery-1.9.0.min.js

—-jquery.jqGrid.min.js

—-jquery.jqGrid.src.js

至此基本环境算是搭建完成了,下面就可以创建jqgrid的第一个页面了。

jqgrid的helloword

 

创建一个页面mygrid.html,内容是:( 注意有些版本号,需要根据安装时的更改)


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>My First jqGrid</title>

<link rel="stylesheet" type="text/css" media="screen" href="css/ui-lightness/jquery-ui-1.10.3.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" />

<style>
html, body {
margin: 0;
padding: 0;
font-size: 75%;
}
</style>
<script src="js/jquery-1.9.0.min.js" type="text/javascript"></script>
<script src="js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>

<script type="text/javascript">

$(document).ready(
function() {
jQuery("#list2").jqGrid({
url:"http://hostname:9999/cgi-bin/data.pl",#后端的数据交互程序,改为你的
datatype: "json",//前后交互的格式是json数据
mtype: 'GET',//交互的方式是发送httpget请求
colNames:['id','col1','col2'],//表格的列名
colModel:[
{name:'id',index:'id', width:30},//每一列的具体信息,index是索引名,当需要排序时,会传这个参数给后端
{name:'col1',index:'col1', width:65,align:"right"},
{name:'col2',index:'col2', width:65,align:"right"}
],
rowNum:100,//每一页的行数
height: 'auto',
rowList:[100,200,300],
pager: '#pager2',
sortname: 'id',
viewrecords: true,
sortorder: "desc",
jsonReader: {//读取后端json数据的格式
root: "rows",//保存详细记录的名称
total: "total",//总共有页
page: "page",//当前是哪一页
records: "records",//总共记录数
repeatitems: false
},
caption: "My jqgrid test"//表格名称
});
jQuery("#list2").jqGrid('navGrid','#pager2',{edit:false,add:false,del:false});

});
</script>

</head>
<body>
 <table id="list2"></table>
 <div id="pager2"></div>
</body>
</html>

前后端数据交互的脚本data.pl如下:


#!/usr/bin/perl

use strict;
use warnings;

use JSON;

use CGI qw(:standard);

my %data = ();
my $count = 0;
print header('Content-Type: text/plain; charset=UTF-8');

while($count < 10){
 my %row = ();
 $row{id} = ++$count;
 $row{col1} = 'col1'.$count;
 $row{col2} = 'col2'.$count;
 $data{'rows'}[$count-1] = {%row};
}

$data{'page'} = 1;
$data{'total'} = 1;
$data{'records'} = $count;

print to_json(\%data);

这时候访问的效果为:

mygrid

有了jqgrid,展现数据就比较方便了。

示例代码:http://www.nklike.com/test/jqgrid/,to be continue

本文的评论功能被关闭了.