1.第一个案例:服务端数据加载
从服务端获取数据:
服务端代码Test.java
package test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html");
PrintWriter writer=resp.getWriter();
writer.println("{data : [{ no : 1 , name :'ffa', age : 12, gender : 'M' , english : 76.5 , math :92 },{ no : 2 , name :'bbb', age : 11, gender : 'F' , english : 89 , math :87 },{ no : 3 , name :'ccc', age : 13, gender : 'F' , english : 53 , math :62 }]}");
writer.flush();
writer.close();
}
}
在web项目中配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>gt-grid</display-name>
<servlet>
<servlet-name>test1</servlet-name>
<servlet-class>test.Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test1</servlet-name>
<url-pattern>/test1</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
index3.jsp
使用客户端分页:
为 grid添加两个属性 :
1 是 loadURL : '.....' 值为一个合法的 可访问到的url,本例中是我写的一个servlet的url
2 是 remotePaging : true/false 时候使用远程分页. 如果是客户端分页 要设置成 false
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>gt-grid案例2</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<link rel="stylesheet" type="text/css" href="gt-grid/gt_grid.css" />
<script type="text/javascript" src="gt-grid/gt_msg_cn.js"></script>
<script type="text/javascript" src="gt-grid/gt_grid_all.js"></script>
<script type="text/javascript">
//2.创建数据集 var dsConfig ....
var dsConfig = {
fields : [ {
name : 'no',
type : 'int',
index : 'no'
}, {
name : 'name',
type : 'string',
index : 'name'
}, {
name : 'age',
type : 'int',
index : 'age'
}, {
name : 'gender',
type : 'string',
index : 'gender'
}, {
name : 'english',
type : 'float',
index : 'english'
}, {
name : 'math',
type : 'float',
index : 'math'
},
/*扩张数据集 ...其他field略 ... */
{
name : 'total',
type : 'float',
initValue : function(record) {
return record['english'] + record['math'];
}
}
]
};
//3.设计列 var colsConfig ...
var colsConfig = [
{
id : 'no',
header : "学号",
fieldName : 'no'
},
{
id : 'name',
header : "姓名",
fieldName : 'name'
},
{
id : 'age',
header : "年龄",
fieldName : 'age'
},
{
id : 'gender',
header : "性别",
width : 50,
renderer : GT.Grid.mappingRenderer({
'U' : '未知',
'M' : '男',
'F' : '女'
}, '未知')
},
{
id : 'english',
header : "英语",
fieldName : 'english'
},
{
id : 'math',
header : "数学",
fieldName : 'math'
},
//增加扩展列
{
id : 'total',
header : "总成绩",
width : 70,
align : 'right',
renderer : function(value, record, columnObj, grid, colNo,
rowNo) {
var total = record['total'];
if (total > 170) {
total = '<span style="color:red" >' + total + '</span>';
} else if (total < 120) {
total = '<span style="color:blue" >' + total
+ '</span>';
}
return total;
}
},
//扩张显示列
{
id : 'detail',
header : "详细信息",
width : 120,
renderer : function(value, record, columnObj, grid, colNo,
rowNo) {
//.代表当前
return '<a href=".?no=' + record['no'] + '" >'
+ record['name'] + ' 的详细信息</a>';
}
}
];
//4.设计grid的参数 var gridConfig ....
var gridConfig = {
id : "grid1",
/*
loadURL : '.....' 值为一个合法的 可访问到的url,本例中是我写的一个servlet的url
remotePaging : true/false 时候使用远程分页. 如果是客户端分页 要设置成 false,
*/
loadURL : 'test1',
remotePaging : false,
dataset : dsConfig,
columns : colsConfig,
container : 'grid1_container',
toolbarPosition : 'bottom',
toolbarContent : 'state',
toolbarContent : 'nav | goto | pagesize | state',
pageSize : 10,
pageSizeList : [5,10,15,20]
};
//5.var mygrid=new GT.Grid( gridConfig );
var mygrid = new GT.Grid(gridConfig);
//6. load加载
GT.Utils.onLoad(GT.Grid.render(mygrid));
</script>
</head>
<body>
<!-- grid的容器. -->
<div id="grid1_container" style="width:700px;height:300px"></div>
</body>
</html>
2.第二个案例
需要引入jar包
Test2.java
package test;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
public class Test2 extends HttpServlet {
//模拟数据库
private static int total=200;
public static List MOCK_DATA=new ArrayList();
static{
String [] genders={"U","M","F"};
for(int i=0;i<total;i++){
Map reocrd=new HashMap();
reocrd.put("no",new Integer(i+1));
reocrd.put("name", "ab"+i);
reocrd.put("age", (int)((Math.random()+1)*10)+10);
reocrd.put("gender", genders[i%3]);
reocrd.put("english", new Integer((int)(((Math.random()+1)*100)%80+20)));
reocrd.put("math", new Integer((int)(((Math.random()+1)*100)%70+30)));
MOCK_DATA.add(reocrd);
}
}
public static int countStudents(){
return MOCK_DATA.size();
}
public static List getStudentByPage(int startRowNum,int pageSize){
List pageData=new ArrayList();
for(int i=startRowNum-1,len=startRowNum+pageSize-1;i<len;i++){
pageData.add(MOCK_DATA.get(i));
}
return pageData;
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//接受gt_grid发送请求
req.setCharacterEncoding("UTF-8");
String gtjson=req.getParameter("_gt_json");
//把String转化为json
JSONObject jsonObject=JSONObject.fromObject(gtjson);
//把json转化为map
Map indata=jsonMap(jsonObject);
Map page=(Map) indata.get("pageInfo");
// System.out.println(page);
//覆盖总页数
page.put("totalRowNum",total);
//得到查询后的结果
List list=getStudentByPage(Integer.parseInt(page.get("startRowNum").toString()),Integer.parseInt(page.get("pageSize").toString()));
//返回的json
JSONObject rjson=new JSONObject();
rjson.put("pageInfo",page);
rjson.put("data",list);
System.out.println(rjson);
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html");
PrintWriter out=resp.getWriter();
out.print(rjson.toString());
out.flush();
out.close();
}
public static Map jsonMap(JSONObject obj_JS){
Map map=new HashMap();
Iterator keyItr=obj_JS.keys();
while(keyItr.hasNext()){
String key=(String) keyItr.next();
Object e;
try{
e=obj_JS.get(key);
if(e instanceof JSONObject){
e=jsonMap((JSONObject)e);
}
map.put(key, e);
}catch(JSONException e1){
}
}
return map;
}
}
在web文件配置
<servlet>
<servlet-name>test2</servlet-name>
<servlet-class>test.Test2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test2</servlet-name>
<url-pattern>/test2</url-pattern>
</servlet-mapping>
jsp
使用服务器端分页:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>gt-grid案例2</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<link rel="stylesheet" type="text/css" href="gt-grid/gt_grid.css" />
<script type="text/javascript" src="gt-grid/gt_msg_cn.js"></script>
<script type="text/javascript" src="gt-grid/gt_grid_all.js"></script>
<script type="text/javascript">
//2.创建数据集 var dsConfig ....
var dsConfig = {
fields : [ {
name : 'no',
type : 'int',
index : 'no'
}, {
name : 'name',
type : 'string',
index : 'name'
}, {
name : 'age',
type : 'int',
index : 'age'
}, {
name : 'gender',
type : 'string',
index : 'gender'
}, {
name : 'english',
type : 'float',
index : 'english'
}, {
name : 'math',
type : 'float',
index : 'math'
},
/*扩张数据集 ...其他field略 ... */
{
name : 'total',
type : 'float',
initValue : function(record) {
return record['english'] + record['math'];
}
}
]
};
//3.设计列 var colsConfig ...
var colsConfig = [
{
id : 'no',
header : "学号",
fieldName : 'no'
},
{
id : 'name',
header : "姓名",
fieldName : 'name'
},
{
id : 'age',
header : "年龄",
fieldName : 'age'
},
{
id : 'gender',
header : "性别",
width : 50,
renderer : GT.Grid.mappingRenderer({
'U' : '未知',
'M' : '男',
'F' : '女'
}, '未知')
},
{
id : 'english',
header : "英语",
fieldName : 'english'
},
{
id : 'math',
header : "数学",
fieldName : 'math'
},
//增加扩展列
{
id : 'total',
header : "总成绩",
width : 70,
align : 'right',
renderer : function(value, record, columnObj, grid, colNo,
rowNo) {
var total = record['total'];
if (total > 170) {
total = '<span style="color:red" >' + total + '</span>';
} else if (total < 120) {
total = '<span style="color:blue" >' + total
+ '</span>';
}
return total;
}
},
//扩张显示列
{
id : 'detail',
header : "详细信息",
width : 120,
renderer : function(value, record, columnObj, grid, colNo,
rowNo) {
//.代表当前
return '<a href=".?no=' + record['no'] + '" >'
+ record['name'] + ' 的详细信息</a>';
}
}
];
//4.设计grid的参数 var gridConfig ....
var gridConfig = {
id : "grid1",
/*remotePaging : true时候使用服务器端分页*/
loadURL : 'test2',
remotePaging : true,
//String gtJson = request.getParameter("_gt_json");
dataset : dsConfig,
columns : colsConfig,
container : 'grid1_container',
toolbarPosition : 'bottom',
toolbarContent : 'state',
toolbarContent : 'nav | goto | pagesize | state',
pageSize : 10,
pageSizeList : [5,10,15,20]
};
//5.var mygrid=new GT.Grid( gridConfig );
var mygrid = new GT.Grid(gridConfig);
//6. load加载
GT.Utils.onLoad(GT.Grid.render(mygrid));
</script>
</head>
<body>
<!-- grid的容器. -->
<div id="grid1_container" style="width:700px;height:300px"></div>
</body>
</html>