`
huang2030
  • 浏览: 24491 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

jqGrid+jsp 表格分页

阅读更多
jqGrid+jsp 表格分页


    最近由于项目需求要用到jqGrid表格分页,网上看了一下确实是一个很漂亮也功能很全的插件,但是由于网上相关资料很少,文档都是英文,也只有PHP的例子,JSP的例子可以说是完全找不到,最后只得自己琢磨,再参考了下官网的示例,终于是初步弄明白了她的用法。在这里写一篇简单的教程,希望对与我有同样需求的人有所帮助,这是我第一次发贴,请大家多多指教~~

    首先,配置环境
    我使用的是jqGrid-3.4.3版本,下载后目录结构如图



    根据自己的目录结构,把js文件夹、jquery.jqGrid.js和jquery.js文件放到工程js目录下,themes\basic目录下的grid.css放到css目录下,themes\basic目录下的images目录放到image目录下,themes目录下其它文件暂时用不到。由于我们修改了目录结构,因此也要修改相关文件。
    首先是grid.css文件,这里面要引用图片,可使用Eclipse查找替换功能将images全部替换成../image/images即可,还有jquery.jqGrid.js,将pathtojsfiles改为js/js/,因为jqGrid是通过jquery.jqGrid.js查找加载其它JS文件,所以要将它改为JS存放路径,而且在该文件modules的include参数可以设置加载指定文件(true为加载,false为不加载),如果只是简单表格,只要将前两个设置为true就够了。
    接下来在页面中导入以下几个文件:
   
<script type="text/javascript" src="js/jquery.js"></script>
<link rel="stylesheet" type="text/css" media="screen" href="css/grid.css" /> 
<script type="text/javascript" src="js/jquery.jqGrid.js"></script> 
    


    然后我们来测试一下环境
    页面中写入以下代码:
<script type="text/javascript">
jQuery(document).ready(function(){
	jQuery("#list4").jqGrid({
		datatype: "local", //数据来源,本地数据
		height: 250,
	   	colNames:['编号','Date', 'Client', 'Amount','Tax','Total','Notes'],
	   	colModel:[
	   		{name:'id',index:'id', width:60, sorttype:"int"},
	   		{name:'invdate',index:'invdate', width:90, sorttype:"date"},
	   		{name:'name',index:'name', width:100},
	   		{name:'amount',index:'amount', width:80, align:"right",sorttype:"float"},
	   		{name:'tax',index:'tax', width:80, align:"right",sorttype:"float"},		
	   		{name:'total',index:'total', width:80,align:"right",sorttype:"float"},		
	   		{name:'note',index:'note', width:150, sortable:false}		
	   	],
	   	imgpath: 'image/images', //图片存放路径
	   	multiselect: false,
	   	caption: "jqGrid表格测试"
	});

	var mydata = [
			{id:"1",invdate:"2007-10-01",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"},
			{id:"2",invdate:"2007-10-02",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"},
			{id:"3",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"},
			{id:"4",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"},
			{id:"5",invdate:"2007-10-05",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"},
			{id:"6",invdate:"2007-09-06",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"},
			{id:"7",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"},
			{id:"8",invdate:"2007-10-03",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"},
			{id:"9",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"}
			];
	for(var i=0;i<=mydata.length;i++)
		jQuery("#list4").addRowData(i+1,mydata[i]);
		
});
</script>
<body>
	<table id="list4" class="scroll" cellpadding="0" cellspacing="0"></table>
</body>

    然后运行,如果显示以下页面,说明我们的环境就配置成功了



    然后,由于我们要用到分页与后台进行交互,所以后台代码是必不可少的,我在项目中用的是Struts2+Spring+Hibernate,SSH环境的配置就略过不提,反正后台都是大同小异,而且为简化这个例子,也没有与数据库进行交互,以下是Action中的代码:
public String jqgridTest(){
		HttpServletRequest request = ServletActionContext.getRequest();
		HttpServletResponse response = ServletActionContext.getResponse();
		String page = request.getParameter("page"); //取得当前页数
		String rows = request.getParameter("rows"); //取得每页显示行数
		int totalRecord = 80; //总记录数(应根据数据库取得,在此只是模拟)
		int totalPage = totalRecord%Integer.parseInt(rows) == 0 ? 
				totalRecord/Integer.parseInt(rows) : totalRecord/Integer.parseInt(rows)+1; //计算总页数
		try {
		int index = (Integer.parseInt(page)-1)*Integer.parseInt(rows); //开始记录数
		int pageSize = Integer.parseInt(rows);
                  //以下模拟构造JSON数据对象
		String json = "{total: "+totalPage+", page: "+page+", records: "+totalRecord+", rows: [";
		for (int i = index; i < pageSize + index && i<totalRecord; i++) {
			json += "{cell:['ID "+i+"','NAME "+i+"','PHONE "+i+"']}";
			if (i != pageSize + index - 1 && i != totalRecord - 1) {
				json += ",";
			}
		}
		json += "]}";
		//System.out.println(json);
		response.getWriter().write(json); //将JSON数据返回页面
		} catch (Exception ex) {
		}
		
		return null;
		
	}

    在后台只要将JSON格式数据返回就行,可以从数据库取得数据再构造成如上JSON格式就OK了

    最后,再来修改页面代码
<script type="text/javascript">
jQuery(document).ready(function(){
	jQuery("#myTab").jqGrid({
		datatype: "json", //将这里改为使用JSON数据
		url:'qxgl_jqgridTest.action', //这是Action的请求地址
		mtype: 'POST',
		height: 250,
		width: 400,
	   	colNames:['编号','姓名', '电话'],
	   	colModel:[
	   		{name:'id',index:'id', width:60, sorttype:"int"},
	   		{name:'name',index:'name', width:90},
	   		{name:'phone',index:'phone', width:100}		
	   	],
	   	pager: 'pager', //分页工具栏
	   	imgpath: 'image/jqgrid', //图片路径
	   	rowNum:10, //每页显示记录数
	   	viewrecords: true, //是否显示行数
	   	rowList:[10,20,30], //可调整每页显示的记录数
	   	multiselect: false, //是否支持多选
	   	caption: "jqGrid表格测试"
	});
});
</script>
<body>
	<table id="myTab" class="scroll" cellpadding="0" cellspacing="0"></table>
	<div id="pager" class="scroll"></div>
</body>


    再次运行,将会得到以下效果



    好了,我们的jqGrid表格分页就大功告成啦,本人是每一次接触jqGrid,写下了自己的理解,如果有哪些不对的地方也希望大家多多指教,呵呵
  • 大小: 7.5 KB
  • 大小: 13.8 KB
  • 大小: 13.7 KB
17
2
分享到:
评论
11 楼 wqh_1011 2013-12-16  
能否给一份源码啊,642963550@qq.com
10 楼 哈哈shuai 2013-09-09  
为什么我这显示分页只显示一条数据,分页还不起作用!
9 楼 hj270187161 2012-02-21  
不错,搞定了。
8 楼 xiaoyaocanghai 2012-01-06  
怎么排序不好用啊
7 楼 xchsh12345 2011-11-21  
楼主 可不可以给一份啊   我做出的页面的效果并没有你的漂亮啊  你自己又加了图片吗???不给代码  给图片也行  呵呵   754317922@qq.com
6 楼 Java+Flex 2011-10-04  
分页不显示啊
5 楼 xiaokang1582830 2011-08-09  
如果需要每行提供查看详情又应该怎么做?
4 楼 only_xxp 2010-09-18  
lostsm 写道
为什么我照着做却没有成功啊,是否可以发源代码给我,谢谢!邮箱是lostsm@163.com


按楼主的方法做出来了, 不过很纠结, 因为忽略了一些东西, 以致于出了很多问题

1.  版本
2.  首先是grid.css文件,这里面要引用图片,可使用Eclipse查找替换功能将images全部替换成../image/images即可,还有jquery.jqGrid.js,将pathtojsfiles改为js/js/,因为jqGrid是通过jquery.jqGrid.js查找加载其它JS文件,所以要将它改为JS存放路径,而且在该文件modules的include参数可以设置加载指定文件(true为加载,false为不加载)  得注意
3 楼 only_xxp 2010-09-14  
感谢楼主的分享
2 楼 lostsm 2010-04-20  
为什么我照着做却没有成功啊,是否可以发源代码给我,谢谢!邮箱是lostsm@163.com
1 楼 phosphory 2010-04-09  
利用这篇文章,我做出第一个jQuery与struts2融合的例子。不过你用SSH时修改页面代码这部分的代码有点问题。imgpath: 'image/jqgrid', //图片路径  这个值应该 'image/images'

相关推荐

    jqgrid+三大框架

    **jqGrid** 是一个非常强大的JavaScript表格插件,它提供了丰富的特性,如分页、排序、过滤、编辑、导入导出数据等功能,用于在网页上展示大量结构化的数据。jqGrid支持JSON、XML、HTML等多种数据格式,可以方便地与...

    jqgrid+struts2

    jqGrid是一款基于jQuery的开源数据网格插件,它提供了丰富的功能,包括数据分页、排序、搜索、编辑以及自定义列等。jqGrid使得在网页上展示大量数据变得简单,通过AJAX技术实现动态加载,提升用户体验。其主要特点...

    jqgrid行编辑+动态为其他列赋值

    jqGrid提供了丰富的功能,包括排序、筛选、分页以及行编辑等。在本例中,我们将深入探讨如何实现"jqgrid行编辑+动态为其他列赋值"这一功能。 首先,我们需要理解jqGrid的行编辑功能。jqGrid允许用户在表格的每一行...

    jqgrid JSP例子

    jqGrid是一个开源的Web表格组件,它支持Ajax加载、分页、排序、搜索、编辑等功能。通过使用JSON、XML或纯HTML格式的数据,jqGrid可以灵活地展示和管理数据。在JSP项目中,我们可以利用jqGrid的这些特性来创建交互式...

    jqGrid 前端框架 连接后台实例 java servlet+jsp+mysql

    4. **JSP展示**:JSP页面负责显示jqGrid,需要引入jqGrid的CSS和JS文件,并设置表格的基本结构。 5. **数据绑定**:jqGrid通过Ajax调用Servlet获取数据,并自动将数据填充到表格中。同时,它还支持行选择、编辑、...

    Struts2JQGrid java版本分页

    5. JSP页面:在JSP页面中,引入JQGrid的CSS和JS文件,创建JQGrid实例,设置相应的配置项(如列定义、分页参数等)。 6. 交互处理:前端使用JQGrid提供的API进行事件监听,如页码改变、排序等,发送Ajax请求到后端...

    ssh+jqGrid的项目

    5. jqGrid的API:理解如何在JSP页面中引入jqGrid,设置表格的列,以及处理分页、排序和搜索等功能。 6. 数据的交互:熟悉前后端的数据传输格式,如JSON,以及如何通过Ajax实现异步通信。 总之,这个项目为学习SSH和...

    jqGrid demo (完整版)

    "css" 文件夹包含 jqGrid 的样式文件,它们控制着表格的外观,如单元格样式、表头样式、分页样式等。开发者可以根据需求修改 CSS 来改变 jqGrid 的视觉效果。 6. **jqGrid 插件** "plugins" 文件夹可能包含 ...

    JQGrid系列教程

    JQGrid 是一个基于 jQuery 的表格控件,它使用 AJAX 方式与服务器端通信,能够实现多种功能,如排序、过滤、分页、编辑等。下面是 JQGrid 的一些关键特点和使用方法。 JQGrid 的特点 * 外观时髦,功能齐全 * JS ...

    ASP.NET中使用JqGrid完整实现.docx

    JqGrid是由Trirand公司的Tony Tomov开发的,它能够无缝集成到各种服务器端技术,包括ASP.NET、JavaServlets、JSP和PHP等。 在ASP.NET环境中集成JqGrid非常简单,主要步骤包括: 1. **下载和准备JqGrid文件**:首先...

    jqgrid celledit

    9. **分页和编辑**:在分页的jqGrid中,使用celledit模式时要注意,当用户在不同页面间切换时,未保存的编辑可能丢失。因此,最好在用户离开当前页面前保存所有编辑。 10. **兼容性和更新**:虽然jqGrid 4.0是一个...

    jqGrid官方I文档

    **jqGrid** 是一个基于 jQuery 的客户端表格组件,能够高效地展示和处理表格数据。它支持通过 Ajax 动态加载数据,这意味着它可以与多种服务器端技术(如 PHP、ASP.NET、Java Servlets、JSP、ColdFusion 和 Perl)...

    JqGrid项目(java web)

    以及JSP页面,其中包含了JqGrid的HTML和JavaScript代码,用于渲染和操作表格。 总的来说,JqGrid项目(java web)展示了如何利用Struts2和Spring来构建一个功能丰富的数据管理界面。这个项目中的核心知识点包括: ...

    jqGrid增删改查例子

    2. `JSP`文件:前端界面,包括jqGrid的HTML和JavaScript代码,用于显示和操作表格。 3. `Action`类:处理请求的Java类,实现CRUD逻辑并返回结果。 4. `DAO`(数据访问对象)类:处理与数据库的交互,如查询、插入、...

    jqGridDemo

    jqGrid是一款基于jQuery的开源数据网格组件,它允许你在网页上展示大量结构化的数据,并提供了丰富的功能,如数据分页、排序、过滤、编辑等。jqGrid支持多种数据源,包括JSON、XML、HTML以及本地数组,这使得它在Web...

    jqGrid与Struts2的结合应用_操作Grid数据

    要实现 jqGrid 与 Struts2 的结合,首先需要在 JSP 页面中引入 jqGrid 相关的 JavaScript 和 CSS 文件,并配置 jqGrid 的基本选项,如列定义、数据源等。然后,Struts2 需要定义一个 Action 来处理来自 jqGrid 的...

    jqGrid与Sturts2的结合例子

    jqGrid是一款功能强大的JavaScript表格插件,用于在Web页面中展示和操作数据,它支持分页、排序、搜索和编辑等功能。Struts2是Java Web开发中的一个MVC框架,用于构建灵活、可扩展的Web应用程序。将jqGrid与Struts2...

    JqGrid Demo json

    **JqGrid Demo json** 是一个基于Web的前端数据展示示例,它使用了JqGrid库和JSON数据格式来实现动态、交互式的表格。JqGrid是一个强大的jQuery插件,用于创建高度可定制和功能丰富的网格视图,广泛应用于数据管理和...

    jqgrid帮组文档

    由于 jqGrid 是客户端解决方案,并通过 Ajax 回调动态加载数据,因此可以与任何服务器端技术集成,包括 PHP、ASP、Java Servlets、JSP、ColdFusion 和 Perl。 #### 二、功能特性 - **灵活性**:支持多种数据格式...

    jqGrid代码例子[参考].pdf

    这个例子展示了如何在JSP页面上使用`jqGrid`与后端Servlet进行数据交互,以及如何通过JavaScript函数来控制表格的操作,如分页、查询和清空数据。通过这样的方式,开发者可以构建出一个功能强大的数据展示和管理界面...

Global site tag (gtag.js) - Google Analytics