Jquery flexgrid

现在我们来实现一个使用ajax动态调用后台产生的数据来填充table的内容的小例子。

Html代码 复制代码
  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>flexgrid Test</title>  
  8. <link rel="stylesheet" href="../css/flexigrid/flexigrid.css"  
  9.     type="text/css"></link>  
  10. <script type="text/javascript" src="../lib/jquery/jquery.js"></script>  
  11. <script type="text/javascript" src="../flexigrid.js"></script>  
  12. <script type="text/javascript">  
  13.   
  14.     $().ready(function() {   
  15.         $(".flex2").flexigrid   
  16.         (   
  17.         {   
  18.         url: 'post.jsp',   
  19.         dataType: 'json',   
  20.         colModel : [   
  21.             {display: '操作', name : 'operation', width : 60, sortable : true, align: 'center'},   
  22.             {display: '编号', name : 'id', width : 60, sortable : true, align: 'center'},   
  23.             {display: '姓名', name : 'name', width : 120, sortable : true, align: 'left'},   
  24.             {display: '密码', name : 'iso3', width : 120, sortable : true, align: 'left', hide: true},   
  25.             {display: '年龄', name : 'managename', width : 120, sortable : true, align: 'left'},   
  26.             {display: '住址', name : 'data', width : 120, sortable : true, align: 'left'}   
  27.             ],   
  28.   
  29.         searchitems : [   
  30.             {display: '姓名', name : 'username', isdefault: true},   
  31.             {display: '住址', name : 'address'}   
  32.             ],   
  33.         sortname: "id",   
  34.         sortorder: "asc",   
  35.         usepager: true,   
  36.         title: '人员管理',   
  37.         useRp: true,   
  38.         total: 10,   
  39.         rp: 10,   
  40.         showTableToggleBtn: true,   
  41.         width: 600,   
  42.         height: 300,   
  43.         procmsg: '加载中, 请稍等 ...'   
  44.         }   
  45.         );   
  46.   
  47.     });   
  48. </script>  
  49. </head>  
  50. <body>  
  51. <input id="hidden" type="hidden" name="hidden" value="null" />  
  52. <table class="flex2" ></table>  
  53. </body>  
  54. </html>  
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>flexgrid Test</title>
<link rel="stylesheet" href="../css/flexigrid/flexigrid.css"
	type="text/css"></link>
<script type="text/javascript" src="../lib/jquery/jquery.js"></script>
<script type="text/javascript" src="../flexigrid.js"></script>
<script type="text/javascript">

	$().ready(function() {
		$(".flex2").flexigrid
		(
		{
		url: 'post.jsp',
		dataType: 'json',
		colModel : [
			{display: '操作', name : 'operation', width : 60, sortable : true, align: 'center'},
			{display: '编号', name : 'id', width : 60, sortable : true, align: 'center'},
			{display: '姓名', name : 'name', width : 120, sortable : true, align: 'left'},
			{display: '密码', name : 'iso3', width : 120, sortable : true, align: 'left', hide: true},
			{display: '年龄', name : 'managename', width : 120, sortable : true, align: 'left'},
			{display: '住址', name : 'data', width : 120, sortable : true, align: 'left'}
			],

		searchitems : [
			{display: '姓名', name : 'username', isdefault: true},
			{display: '住址', name : 'address'}
			],
		sortname: "id",
		sortorder: "asc",
		usepager: true,
		title: '人员管理',
		useRp: true,
		total: 10,
		rp: 10,
		showTableToggleBtn: true,
		width: 600,
		height: 300,
		procmsg: '加载中, 请稍等 ...'
		}
		);

	});
</script>
</head>
<body>
<input id="hidden" type="hidden" name="hidden" value="null" />
<table class="flex2" ></table>
</body>
</html>

 这个是我们页面的代码

和之前的简单例子相比,区别有两个

1.我们要生成的table只需要给出一个

Html代码 复制代码
  1. <table class="flex2" ></table>  
<table class="flex2" ></table>

 

table标签即可,table内部的结构和数据均交给js来生成

2.参数需要配置 url: 'post.jsp',

PS:这里我只是为了表现下一个例子,就没有把后台写的很完整,只是用ajax请求了一个jsp页面,在jsp页面构造了一个json结构的数据回来


 

post.jsp的内容如下:

Html代码 复制代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <jsp:directive.page import="javabean.Student" />  
  3. <%   
  4.     System.out   
  5.             .println("--------------------post.jsp----------------------");   
  6.   
  7.     System.out.println("rp==" + request.getParameter("rp"));   
  8.     System.out.println("sortorder=="   
  9.             + request.getParameter("sortorder"));   
  10.     System.out.println("sortname==" + request.getParameter("sortname"));   
  11.     System.out.println("page==" + request.getParameter("page"));   
  12.     System.out.println("query==" + request.getParameter("query"));   
  13.     System.out.println("qtype==" + request.getParameter("qtype"));   
  14.     String rp = request.getParameter("rp"); //每页显示的数据数   
  15.     String pageString = request.getParameter("page");//获取 flexgrid传过来的页数。   
  16.     int total = 100;   
  17.     int rpint = Integer.parseInt(rp);   
  18.     int pageint = Integer.parseInt(pageString);   
  19.     //-------------------------组成返回的数据----------------------------   
  20.     List<Student> custList = new ArrayList<Student>();//定义一个list   
  21.   
  22.     for (int j = rpint * (pageint - 1) + 1; j < pageint * rpint + 1; j++) {   
  23.         if (j > total)   
  24.             break;   
  25.         Student Student = new Student();   
  26.         Student.setId(j);   
  27.         Student.setAge(20 + j);   
  28.         Student.setAddress("深圳" + j);   
  29.         Student.setPassword("112233#" + j);   
  30.         Student.setUsername("张三" + j);   
  31.   
  32.         custList.add(Student);   
  33.     }   
  34.   
  35.     String a = "";//用来拼接数据   
  36.     int list_size = custList.size();   
  37.   
  38.     if (list_size > 0) {   
  39.         for (int i = 0; i < list_size; i++) {   
  40.             Student student = custList.get(i);   
  41.             aa = a   
  42.             + "{id:'ZW',cell:['<img src=/myProject/flexigrid/accept.png >','"   
  43.             + student.getId() + "','" + student.getUsername()   
  44.             + "','" + student.getPassword() + "','"   
  45.             + student.getAge() + "','" + student.getAddress()   
  46.             + "']},";   
  47.         }   
  48.     } else {   
  49.         a = ",";   
  50.     }   
  51.     aa = a.substring(0, a.length() - 1);   
  52.   
  53.     out.println("{");   
  54.     out.println("page: " + pageString + ",");   
  55.     out.println("total: " + total + ",");   
  56.     out.println("rows: [");   
  57.     out.println(a);   
  58.     out.println("]}");   
  59. %>  
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<jsp:directive.page import="javabean.Student" />
<%
	System.out
			.println("--------------------post.jsp----------------------");

	System.out.println("rp==" + request.getParameter("rp"));
	System.out.println("sortorder=="
			+ request.getParameter("sortorder"));
	System.out.println("sortname==" + request.getParameter("sortname"));
	System.out.println("page==" + request.getParameter("page"));
	System.out.println("query==" + request.getParameter("query"));
	System.out.println("qtype==" + request.getParameter("qtype"));
	String rp = request.getParameter("rp"); //每页显示的数据数
	String pageString = request.getParameter("page");//获取 flexgrid传过来的页数。
	int total = 100;
	int rpint = Integer.parseInt(rp);
	int pageint = Integer.parseInt(pageString);
	//-------------------------组成返回的数据----------------------------
	List<Student> custList = new ArrayList<Student>();//定义一个list

	for (int j = rpint * (pageint - 1) + 1; j < pageint * rpint + 1; j++) {
		if (j > total)
			break;
		Student Student = new Student();
		Student.setId(j);
		Student.setAge(20 + j);
		Student.setAddress("深圳" + j);
		Student.setPassword("112233#" + j);
		Student.setUsername("张三" + j);

		custList.add(Student);
	}

	String a = "";//用来拼接数据
	int list_size = custList.size();

	if (list_size > 0) {
		for (int i = 0; i < list_size; i++) {
			Student student = custList.get(i);
			a = a
			+ "{id:'ZW',cell:['<img src=/myProject/flexigrid/accept.png >','"
			+ student.getId() + "','" + student.getUsername()
			+ "','" + student.getPassword() + "','"
			+ student.getAge() + "','" + student.getAddress()
			+ "']},";
		}
	} else {
		a = ",";
	}
	a = a.substring(0, a.length() - 1);

	out.println("{");
	out.println("page: " + pageString + ",");
	out.println("total: " + total + ",");
	out.println("rows: [");
	out.println(a);
	out.println("]}");
%>

 flexgrid在每一次点击排序,查询,翻页等动作的时候均会调用url指向的链接,进入链接方法,我们可以看到request中可以取到页面上的一些参数,默认的貌似就这6个,分别是需要排序的表格头id,排序的方式,分页大小,分页的第几页,查询的条件,查询的输入内容,根据这些参数,我们可以在后台组成各种各样的数据集,最后采用json的方式传递出去。

  页面接到传递过来的json数据,按照json中数据的顺序,顺次显示在table标签内。

  json构成的时候一些描述是固定的,譬如page,total,rows,cell等,不能写错了。

  由于json中的内容均是string格式的,我们可以直接写上string格式的html,页面解释的时候就可以输出除了文本外的一些其他格式,譬如我这个例子里面,第一列在页面上显示的就是一个img.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值