GT-Grid初学服务端数据加载

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>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值