`

利用JS+CSS对数据进行分页

阅读更多
看见许多关于分页的贴子,但始终没有找到一个自己喜欢的,也许是我没遇上,但不管怎么也好,自己动手写了一个,满足自己的需要.
个人习惯:
本人比较喜欢把分页分成2部分:后台数据源的部分,直接用procedure实现分页,这里不多说,另一部分就是前面WEB显示
实现思路:
见过比较多的做法是,把数据源load进session,然后给每页设定一个rowCount,再算出页数,然后生成页面和对应的数据.
本人比较懒,不喜欢那种老是点击页数提交的感觉,但也不喜欢用ajax来跟后台交互,把页面搞得太复杂了.
也不喜欢用控件,可能是之前.net的控件用不好的原因.剩下的,就是用js+css在一个页面实现分页了.
效果如下图:
....在最下面,是三个图片的合成
具体实现:
1.后台操作,把数据源request.setAttrib()
2.前面,在JSP里
先是获取数据
List list=null;
list=(LinkedList)request.getAttribute("list");
if(list==null){
	list=new LinkedList();
}

然后是生成表格
<form action="" method="post">
					<input type="hidden" name="referenceno" />
					<div id="data">
					<%
					String pages="";
					int count=list.size();
					int p=0;
					int pageItemCount=20;
					int pageCount=count/pageItemCount+1;
					for(int n=0;n<count;n+=pageItemCount){
					%>
					<div id="<%="div"+p %>">
						<table>
							<tr class="title">
								<td>REFNO</td>
								<td>JOBNO</td>
								<td>VENDER</td>
								<td>ORDER BY</td>
								<td>DATE</td>
								<td>HANGTAG</td>
								<td>LABEL</td>
								<td>DETAIL</td>
								<td>PROCESS</td>
							</tr>
							<%
							out.println();
							String order[];
							for(int i=n;i<n+pageItemCount&&i<count;i++){
								//declare temp variant
								String refno="";
								String jobno="";
								String orderman="";
								String vender="";
								String orderdate=""; 
								String ht="";
								String lbl="";
								String alternate="";
								//set alternate row style of class
								if(i%2==0)
									alternate="";
								else
									alternate=" class=\"alternate\"";
								
								order=(String[])list.get(i);
								//string[]:0-referenceno,1-jobno,2-name(orderman),
								//3-vender,4-status,5-orderdate,6-ht,7-lbl
								if(order[0]!=null && ! "null".equals(order[0])) refno=order[0];
								if(order[1]!=null && ! "null".equals(order[1]) && order[1].length()>3 && !"temp".equals(order[1].substring(0,4))) jobno=order[1];
								if(order[2]!=null && ! "null".equals(order[2])) orderman=order[2];
								if(order[3]!=null && ! "null".equals(order[3])) vender=order[3];
								if(order[5]!=null && ! "null".equals(order[5])) orderdate=order[5];
								if(order[6]!=null && ! "null".equals(order[6])) ht=order[6];
								if(order[7]!=null && ! "null".equals(order[7])) lbl=order[7];
								out.println("								"
								+"<tr"+alternate+">"
								+"<td>"+ refno +"</td>"
								+"<td>"+ jobno +"</td>"
								+"<td>"+ vender +"</td>"
								+"<td>"+ orderman +"</td>"
								+"<td>"+ orderdate +"</td>" 
								+"<td>"+ ht +"</td>"
								+"<td>"+ lbl +"</td>"
								+"<td><input type='button' value='DETAIL' class='btn' onclick='orderDetail(\""+refno+"\")'></td>"
								+"<td><input type='button' value='PROCESS' class='btn' onclick='processOrder(\""+refno+"\")'></td>"
								+"</tr>"
								);
							}
							pages+=" <a style='cursor:pointer;' onclick='setPage("+(p++)+","+pageCount+")',>"+p+"</a>";
							%>
						</table>
					</div>
					<%} %>
					</div>
					Page: <%=(pages.length()>0)?pages.substring(1):"" %>
					<script type="text/javascript">setPage(0,<%=pageCount%>);</script>
				</form>

生成HTML后的结构如图:
...在最下面
如结构图所示,在最终的HTML里,有一个div,里面包括了3页的数据,分别存在3个div里,然后利用js+css的把对应id的div的display属性来控制显示哪1页的数据
js代码
/*
 * control the div display or not
 * @param cur the div which want to display
 * @param sum div count (page count)
 */
function setPage(cur,sum){
		for(var i=0;i<sum;i++){
			var d=document.getElementById('div'+i);
			d.style.display="none";
		}
		var d=document.getElementById('div'+cur);
		d.style.display="block";
	}

css代码
<style type="text/css">
	form div {display:none;}
	form #data {height:530px;display:block;}
	form table {border-collapse:collapse;table-layout:fixed;font-size:9pt;text-align:center;}
	form tr.title {background-color:#aeaeae;font-weight:bold;}
	form tr.alternate {background-color:#d7d7d7;}
	form td {border:1px solid #777;}
	form td input.btn {width:60px;font-size:9pt;}
	form input.date {width:80px;}
	form a {text-decoration:underline;}
</style>

最后,弱弱地问一下,还有没有人用java直接写jsp的吗?个人感觉用控件生成的HTML代码太难读了
  • 描述: multi-page content
  • 大小: 363 KB
  • 大小: 72.1 KB
分享到:
评论
3 楼 glamey 2008-08-29  
我们应该杜绝这样的分页方式,太蠢了。

像我们做搜索引擎的,每次用户随便输入一个词,返回的结果可能是10K页左右,如果要这样做的话,那估计我们的服务器早都挂掉了。
LZ要好好考虑这个问题了。。
2 楼 ICBC-JavaBoy 2008-08-29  
qishi001 写道
不敢想象3000页怎么办.

"你杀了我吧...."
如果数据量相对大一点,那就会产生效率问题了吧.
这种分页的探索方式,还是持观望态度...
1 楼 qishi001 2008-08-28  
不敢想象3000页怎么办.

相关推荐

    利用JS+CSS实现滚动表格数据展示

    "利用JS+CSS实现滚动表格数据展示"是一个常见的需求,它可以帮助用户逐行浏览大量的信息,而无需手动调整窗口大小。下面将详细介绍如何通过JavaScript(JS)和层叠样式表(CSS)来实现这一功能。 首先,我们需要...

    html5+javascript+css商城(模拟联想)购物系统

    本项目“HTML5+JavaScript+CSS 商城(模拟联想)购物系统”充分利用这三种技术,打造了一个功能完善的模拟购物平台,实现了动态信息浏览、商品检索、用户注册登录以及数据的增删改等功能。 一、HTML5:新一代的网页...

    原生js + css实现分页

    本项目是利用原生JavaScript(JS)和层叠样式表(CSS)来实现这种功能,无需依赖任何外部库或框架。下面将详细探讨如何使用这两种技术来创建一个功能完备的分页组件。 首先,我们要理解分页的基本结构。通常,分页...

    JS分页控件+CSS样式

    总结,JS分页控件结合CSS样式是网页开发中的重要技术,它们共同实现了用户友好的数据分页功能。通过理解JS分页的基本原理和CSS的样式规则,开发者可以创建出美观、易用的分页组件,提升网站或应用的用户体验。

    html+jquery+css分页插件的简单实现

    4. **分页逻辑**:在JavaScript中,我们需要计算总页数,这通常基于数据的数量和每页显示的数据量。分页插件的核心是处理页码的切换,包括前进、后退、跳转到指定页等功能。这些操作通常涉及到修改DOM元素,更新显示...

    jsoneditor 后台管理展示Json数据的专用模板 (html + js +css)

    JSONEditor的JavaScript部分负责加载和初始化编辑器,处理用户输入,以及与后端进行数据通信。可能的函数包括加载JSON数据、保存编辑后的数据、以及监听和响应用户操作等。 4. **CSS**: CSS(Cascading Style ...

    JS分页控件+CSS

    综上所述,"JS分页控件+CSS"是一个高效且灵活的网页分页解决方案,它利用JavaScript的动态功能和CSS的美化能力,为用户提供流畅的浏览体验。开发者可以根据实际需求对这两部分进行自定义,以满足各种项目的需求。

    淘宝首页html+css+js源码

    通过分析和修改这个源码,开发者可以提升自己的前端开发技能,理解前后端数据交互、API调用、以及如何与后台服务器进行通信。 总的来说,"淘宝首页HTML+CSS+JS源码"提供了一个完整的前端项目实例,涵盖了前端开发的...

    精选多款DIV+CSS分页样式源码

    在分页设计中,`&lt;div&gt;`通常用于包裹整个分页组件,以便对其进行整体样式控制,如设置宽度、对齐方式等。 2. **CSS(层叠样式表)**:CSS是网页设计中用来描述HTML或XML(包括SVG、XHTML等)文档样式的语言。在分页...

    div+css3阶梯分页样式.zip

    "div+css3阶梯分页样式.zip"是一个压缩包,它包含了一种利用HTML、CSS3以及可能涉及JavaScript和jQuery来实现的阶梯式分页样式的资源。这种阶梯式分页设计通常具有更美观和直观的视觉效果,可以提升用户体验。接下来...

    HTML+CSS+JS数据可视化大屏平台模板实例8-电商营业

    可以采用数据分页、延迟加载、Web Worker等技术来提高加载速度和响应性。 9. **可维护性与扩展性**: 设计良好的代码结构和模块化可以方便后期维护和功能扩展。利用ES6的模块系统(import/export)以及模块打包工具...

    HTML+CSS+JS数据可视化大屏平台模板实例29-游戏大数据分析通用模板

    在本项目中,“HTML+CSS+JS数据可视化大屏平台模板实例29-游戏大数据分析通用模板”是一个基于Web的数据展示解决方案,专为游戏行业的数据分析而设计。它结合了HTML、CSS和JavaScript的力量,提供了丰富的视觉效果和...

    HTML+CSS+JS数据可视化大屏平台模板实例6-销售分析

    在构建一个基于HTML、CSS和JavaScript的数据可视化大屏平台模板实例时,重点在于利用这些技术的优势来呈现复杂数据,使其易于理解且具有视觉吸引力。在这个"销售分析"的实例中,我们将探讨如何将这些Web开发基础应用...

    HTML+CSS+JS数据可视化大屏平台模板实例12-产品销售

    在构建“HTML+CSS+JS数据可视化大屏平台模板实例12-产品销售”时,我们需要深入了解HTML、CSS和JavaScript这三种技术,并结合数据可视化工具,以创建一个展示产品销售情况的动态大屏幕界面。以下是对这个项目所涉及...

    JS+CSS实现的拖动分页效果实例

    本文介绍了一种利用JavaScript(JS)和层叠样式表(CSS)来实现的拖动分页效果,允许用户通过直接拖动页面边缘来切换分页,提供更加直观和互动的用户体验。 首先,我们从HTML结构来看,创建一个包含分页内容的`...

    分页样式(CSS+JS+JQuery)

    本资源包“分页样式包”提供了一套完整的CSS、JavaScript和jQuery实现的分页样式解决方案。 一、CSS分页样式 CSS(层叠样式表)是网页设计的核心技术之一,用于控制页面的布局和外观。在分页样式中,CSS主要负责...

    JSP+servlet+filters+JS+CSS+JBean编写新闻管理系统

    本系统采用Java技术栈,结合JSP、Servlet、Filters、JavaScript、CSS以及JBean进行开发,充分利用了Java平台的强大功能和灵活性,旨在为用户提供便捷的操作体验和稳定的系统性能。接下来,我们将详细探讨这些技术在...

    100套css3分页效果

    本文将详细讲解"100套css3分页效果"这一主题,探讨如何利用CSS3实现各种美观且实用的分页样式,以及这些效果对不同浏览器的支持情况。 首先,CSS3的引入为网页设计带来了许多新特性,如伪类选择器、渐变、阴影、...

    JS + CSS 20个幻灯片效果

    18. **数据绑定**:如果幻灯片内容来自服务器,可以使用JS进行数据绑定,实时更新幻灯片内容。 19. **跨浏览器兼容性**:测试并确保幻灯片效果在主流浏览器(如Chrome、Firefox、Safari、Edge)中正常工作。 20. *...

    div+css制作非常实用的24款分页页码css代码

    通过CSS,我们可以对这些元素进行精确的定位和美化,实现各种视觉效果。 接下来,我们来分析分页页码的常见设计和实现方式: 1. **基础样式**:通常,分页页码由数字按钮组成,每一页一个按钮。使用CSS,我们可以...

Global site tag (gtag.js) - Google Analytics