- 浏览: 224464 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
(原创)javascript 实现批量打印《简历》 -
liangchengfck1:
这个只能正对数据量少的批量打印,当你打印10000张数据的时候 ...
(原创)javascript 实现批量打印《简历》 -
dare_:
官网的文档明确说明 是五种 你的默认和no应该是同一种
Spring 中Bean的自动装配六种模式,你懂得几种? -
Franciswmf:
图片上传的东西呢?
java+Ckeditor -
huigou:
地址不对了
ETL Kettle发送邮件时发送失败!高手指点!
Ajax 实现分页及表与表的级联
时间过的真快转眼间有快到周末了,真向往每周周末的时光。今天我们的项目经理是不是头脑发热,让我用ajax实现公司职工表的增,删,改,查,分页查询;着实让我头疼;经理之命不可违啊,写了一天终于完成了;今天想把实现分页的方法写在博客中和大家交流交流。
首先,我对数据中的表进行了分析:
如图
经过分析表中有个deptnoo 部门编号字段与数据库中的dept(如图)表相对应 及将表中的编号换成部门名称,所以此处要实现表与表的级联
主要实现代码如下
这里我主要写ajax实现代码
首先将数据封装,(bean)让后写业务实现层(dao),在些逻辑实现层(service);及MCV框架开发,大家都熟悉吧这就不多说了。
再创建一个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>worker.jsp</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">
<script src="./js/util.js" type="text/javascript"></script>
<script src="./js/emp.js" type="text/javascript"></script>
<script type="text/javascript">
window.onload = function() {
//
$("addemp").style.display = "none";
$("upemp").style.display="none";
}
</script>
</head>
<body>
<h1>
用户查询的请求
</h1>
<input type="button" value="查询所有用户" onclick="selectEmp()" />
<div id="content">
<table border="1px" cellpadding="0" cellspacing="0">
<caption>
员工信息表
</caption>
<thead>
<tr>
<th>
编号
</th>
<th>
姓名
</th>
<th>
岗位
</th>
<th>
入职时间
</th>
<th>
领导
</th>
<th>
薪水
</th>
<th>
奖金
</th>
<th>
部门
</th>
<th>
操作
</th>
</tr>
</thead>
<tbody id="listemps">
</tbody>
</table>
</div>
<div id="pageinfo">
<a href="javascript:getPageInfo(1)">首页</a>
<a href="javascript:getPageInfo(2)" >上一页</a>
<a href="javascript:getPageInfo(3)">下一页</a>
<a href="javascript:getPageInfo(4)">末页</a>
</div>
</body>
</html>
Ajax代码
var empdoc ; function getPageInfo(mark) { var nowpage = empdoc.getAttribute("nowpage"); var countpage = empdoc.getAttribute("countpage"); switch (mark) { case 1: nowpage=1; break; case 2: nowpage--; break; case 3: nowpage++; break; case 4: nowpage=countpage; break; } //获取xhr对象 var xhr = getXhr(); //封装请求信息 xhr.open("get", "./listEmp.do?nowpage="+nowpage, true); //发送请求 xhr.send(); //根据服务器端传递xhr.readyState触发的事件进行处理 xhr.onreadystatechange = function() { //根据readyState是否处理完毕,status服务是否返回成功 if (xhr.readyState == 4 && xhr.status == 200) { //获得xml的document对象 var doc = xhr.responseXML; //获取xml文件的跟标签 var root = doc.documentElement; //获取跟标签的所有子节点 var emps = root.childNodes; //获取tbody对象 var listemps = document.getElementById("listemps"); listemps.innerHTML = ""; for ( var i = 0; i < emps.length; i++) { //判断该节点是否是元素节点,目的兼容IE firefox opera 浏览器 if (emps[i].nodeType == 1) { var emptr = document.createElement("tr"); //获取该节点下面的所有子节点 var empcs = emps[i].childNodes; for ( var j = 0; j < empcs.length; j++) { var emptd = document.createElement("td"); //判断该节点是否是元素节点,目的兼容IE firefox opera 浏览器 if (empcs[j].nodeType == 1) { emptd.appendChild(document .createTextNode(empcs[j].firstChild.nodeValue)); emptr.appendChild(emptd); } } var dutd = document.createElement("td"); emptr.appendChild(dutd); listemps.appendChild(emptr); } } } } }
Servlet中定义nowpage,countpage
String npage = request.getParameter("nowpage");
int nowpage = 1;
if (npage == null) {
} else {
nowpage = Integer.valueOf(npage);
}
// 创建业务对象
EmpServiceImpl esi = new EmpServiceImpl();
int countrecord = esi.getCountRecord();
int countpage = countrecord % EmpServiceImpl.PAGESIZE == 0 ? countrecord
/ EmpServiceImpl.PAGESIZE
: countrecord / EmpServiceImpl.PAGESIZE + 1;
if(nowpage<=1){
nowpage=1;
}
if(nowpage>=countpage){
nowpage=countpage;
}
List<Emp> emps = esi.findNowPageInfo(nowpage);
// 如果以xml数据返回响应 必须设置头位如下方式,并且放在响应的第一行
response.setContentType("text/xml;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<?xml version='1.0' encoding='UTF-8'?>");
out.println("<emps nowpage='" + nowpage + "' countpage='" + countpage
+ "'>");
for (Emp emp : emps) {
out.println("<emp>");
out.println("<empno>" + emp.getEmpno() + "</empno>");
out.print("<ename>" + emp.getEname() + "</ename>");
out.println("<job>" + emp.getJob() + "</job>");
out.print("<hiredate>" + emp.getHiredate() + "</hiredate>");
out.println("<mgr>" + emp.getMgr() + "</mgr>");
out.print("<sal>" + emp.getSal() + "</sal>");
out.print("<comm>" + emp.getComm() + "</comm>");
out.print("<deptno>" + emp.getDeptno() + "</deptno>");
out.println(" </emp>");
}
out.println("</emps>");
out.flush();
out.close();
在实现表与表的级联时 就要将dept数据查询,然后利用ajax创建option添加到select中去
<tr>
<td>部门:</td>
<td>
<select name ="deptno" id="deptno">
<option value="10">请选择部门</option>
</select>
</td>
</tr>
Ajax代码
function listDepts(doc, value) { //获取根节点 var root = doc.documentElement; //获取根节点的子节点 var depts = root.childNodes; //获取HTML dom 对象 var deptnos = document.getElementById("deptno"); //遍历 for ( var i = 0; i < depts.length; i++) { //判读是否是元素节点,目的是兼容各个浏览器 if (depts[i].nodeType == 1) { var dptoption = document.createElement("option"); var eles = depts[i].childNodes; for ( var j = 0; j < eles.length; j++) { if (eles[j].nodeType == 1) { if (j == 0) { if (value == eles[j].firstChild.nodeValue) { dptoption.setAttribute("selected", true); } dptoption.setAttribute("value", eles[j].firstChild.nodeValue); } else if (j == 1) { dptoption.appendChild(document .createTextNode(eles[j].firstChild.nodeValue)); } } } deptnos.appendChild(dptoption); } } }
发表评论
-
项目框架和项目架构的区别是什么?
2012-05-17 12:31 1852项目框架和项目架构的区别是什么?谁能告诉我啊! -
(原创)javascript 实现批量打印《简历》
2012-04-16 15:57 20942(原创)javascript 实现批量打印《简历》 ... -
java+Ckeditor
2012-03-23 18:09 1978CKEditor 二次开发 ---- 为 ... -
iteye 这是咋了
2012-03-23 17:45 11iteye这是咋了 发一篇文章就这么难嘛 越来越他妈的垃圾了 ... -
不查不知道 一查全知道(hibernate注解实现set集合排序)
2011-12-21 16:09 1393@ManyToMany(cascade = { Cascade ... -
《终于解决了》检索 COM 类工厂中 CLSID 为 {0002E510-0000-0000-C000-000000000046}
2011-08-24 18:23 42170异常详细信息: System.Runtime.InteropS ... -
JDK7.0语法新特性及下载
2011-08-12 17:28 28141,菱形语法(泛型实例 ... -
系统性能调优总结分享(转载)
2011-07-01 13:33 1548概述 Ø 性能优化的思 ... -
JAVA内存问题:Java heap space
2011-06-29 14:09 1959错误信息: javax.servlet.Servle ... -
Jquery从入门到精通及附件下载(一)
2011-03-30 08:15 3840Jquery从入门到精通及 ... -
Json 浅谈及解析
2011-03-25 17:07 2270Json 浅谈及解析 Json简介 ... -
《神》预测本周五 java 考试题!!
2011-03-22 19:56 1248预测本周五 java 考试题!! 1,加载类有哪几 ... -
DOM总结(三)及综合案例
2011-03-17 20:59 1085DOM总结(三)及综合案例 1,DOM属性-----re ... -
DOM 总结(二)
2011-03-16 20:30 1305DOM 总结(二) 查找元素的方法: 1 ... -
DOM 总结(一)
2011-03-16 20:24 1479DOM 总结(一) ... -
javascript实现全选,反选及全不选
2011-03-15 19:53 1399javascript实现全选,反选及全部选 html 代 ... -
仿谷歌,百度分页计算分析 代码实现
2011-03-10 19:32 2024仿谷歌,百度分页计 ... -
Java反射概念及类的反射的实例应用
2011-03-04 10:32 2350Java反射概念及类的反射的实例 一、反射的概念 : ... -
BeanUtils工具包下载及应用
2011-03-04 10:23 18697BeanUtils工具包下载及应用 ... -
“世界上最复杂的邮件”诞生了
2011-03-04 08:04 1356“世界上最复杂的邮件” ...
相关推荐
AJAX级联下拉框是一种常见的前端交互设计,它利用Ajax技术实现在用户选择一个下拉选项时,动态地更新另一个相关联的下拉框内容。这种功能在数据关联、筛选和表单填写中非常常见,例如省份和城市的选择,类别和子类别...
在本案例中,我们关注的是如何在`.NET`环境中通过Ajax技术实现动态的省市级联选择和分页功能。 Ajax(Asynchronous JavaScript and XML)是一种在不重新加载整个网页的情况下更新部分网页的技术。通过Ajax,我们...
本文将深入探讨如何使用Ajax来实现级联菜单,并结合数据库获取数据。 首先,我们需要理解Ajax的工作原理。Ajax的核心是XMLHttpRequest对象,它允许JavaScript在不重新加载整个页面的情况下与服务器进行异步通信。...
在本示例中,"Ajax级联下拉列表.rar"是一个关于如何使用Java技术和Ajax实现级联下拉列表的小功能的压缩包。 级联下拉列表是一种常见的前端交互设计,用户在一个下拉列表中做出选择后,第二个或更多的下拉列表会根据...
在这个示例中,Spring可能被用来管理应用程序的bean,包括数据库连接、业务服务等,以及实现数据访问对象(DAO)与服务层的解耦,确保级联分页功能的后台数据处理高效且稳定。 级联分页是指在一个页面上,根据用户...
本资源提供了一个利用Ajax实现增删改查、分页和级联功能的代码示例,适用于各种主流浏览器,包括IE、Firefox和Opera。 增删改查是数据库操作的基本功能,对应于数据库中的INSERT、DELETE、UPDATE和SELECT操作。在...
在Web开发中,Ajax被广泛用于实现动态交互效果,比如级联菜单就是一种常见的应用场景。级联菜单允许用户逐级选择,通常在下拉框中展示,每次选择一个类别后,下一个级别的选项会根据上一级的选择动态加载。 级联...
本项目聚焦于使用AJAX进行页面重构,特别是实现级联下拉列表,这是一种常见的用户界面元素,常见于地址选择、类别筛选等场景。 在级联下拉列表中,一个下拉框的选择会影响另一个下拉框的选项。例如,当你在第一个...
总的来说,利用Ajax技术实现级联式组合框是提升Web应用交互性的一个有效方法。通过异步加载和更新数据,不仅减少了用户等待时间,还优化了资源使用,使得复杂的交互操作变得更加流畅。在实际开发中,开发者还需要...
在网上看到的;希望可以让大家喜欢 【摘 要】 就是采用 Ajax 方式,即开始只载入第一层菜单的内容,当用户选中第一层菜单的某项时,再通过 XmlHttpRequest 来获取相应选项所对应的第二层菜单的内容。
2. **Ajax技术**:AJAX(Asynchronous JavaScript and XML)是一种创建动态网页的技术,允许在不刷新整个页面的情况下与服务器交换数据并更新部分网页内容。在这个应用中,当用户在级联下拉框中选择一个选项时,AJAX...
DWR(Direct Web Remoting)是一个JavaScript库,它允许Java代码在客户端浏览器上运行,从而实现与服务器端的数据实时交互。本篇文章将深入探讨如何利用DWR来实现一个两级级联菜单,并以SQL Server 2000数据库作为...
本篇文章将深入探讨如何利用jQuery实现可收缩展开的级联菜单以及局部刷新功能。 首先,让我们理解级联菜单的概念。级联菜单,又称为下拉菜单或子菜单,是一种常见的用户界面元素,特别是在导航栏中。当用户点击一个...
本文将深入探讨如何利用jQuery实现多级级联下拉列表,同时结合JSON数据类型和Struts2框架,以创建一个功能丰富的交互式用户界面。 **一、jQuery简介** jQuery是由John Resig于2006年创建的,它的核心设计理念是...
发表评论无刷新,www.sendawangluo.com页面获取评论时显示loading加载效果jquery真的是一个非常优秀的JS库,简单容易掌握,对于网页中的多级菜单、级联效果、Tab选项卡切换、图片轮转显示,实现起来都非常的简单,...
- 设计关联表:为了实现级联效果,数据库中的相关表需要有合适的外键关联,比如省份表、城市表和区县表之间的层级关系。 3. **前端页面**: - HTML布局:创建包含三个下拉框的HTML页面,初始状态下只显示最顶层的...
以上就是地区动态级联功能的一般实现方法,具体实现会根据所选技术栈和项目需求有所不同。如果你需要更详细的代码示例或特定技术的解决方案,建议查阅给定的博客文章或解压“demo_my”文件查看源码。
`provinces`表与`countries`表通过外键关联,`cities`表与`provinces`表也有类似的关系,这样可以确保数据的层级关系。 接下来,PHP将负责与数据库进行交互。我们可以创建一个PHP文件,如`get_cities.php`,该文件...
第2章 采用ASP.net Ajax1.0实现Hello Word程序。 第3章 实现Ajax GridView模块。 第4章 实现了聊天室模块(利用ASP.net Ajax)。 第5章 ASP.net Ajax Control Toolkit控件应用。包括:利用AutoCompleteExtender控件...