S2SH+JQuery ztree生成三级级联树形列表菜单1.LoadZTreeAction.java
public LoadZTreeAction() extends ActionSupport{
private static final long serialVersionUID = 4258282097802772367L;
private OneDAO oneDAO;
private TwoDAO twoDAO;
private ThreeDAO threeDAO;
//Generate getters and setters
//为了提高程序效率,先加载二级级联菜单,当点击子菜单时再动态添加下一级
public String loadZTree(){
JSONArray jsonArray = new JSONArray();
JSONObject one = new JSONObject();
JSONObject two = new JSONObject();
List
for(One oTemp:listOne){
int pID = -1;
one.put("id",oTemp.getID());
one.put("pID",pID);
one.put("name",oTemp.getName());
one.put("url","");
one.put("target","rightFrame");
jsonObject.add(one);
List
for(Two tTemp : listTwo){
two.put("id",tTemp.getID());
two.put("pID",oTemp.getID());
two.put("name",tTemp.getName());
two.put("url","");
two.put("target","rightFrame");
jsonObject.add(two);
}
}
return null;
}
public String loadSonTree(){
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");
response.contentType("html/text");
JSONArray jsonArray = new JSONArray();
JSONObject obj = new JSONObject();
String twoID = request.getParameter("twoID");
List
for(Three thTemp : listThree){
obj.put("id",thTemp.getID());
obj.put("pId",twoID);
obj.put("name",thTemp.getName());
obj.put("url","");
obj.put("target","rightFrame");
jsonArray.add(obj);
}
try{
PrintWriter out = response.getWriter();
out.print(jsonArray);
out.flush();
out.close();
}catch(IOException ioe){
ioe.printStackTrace();
}
return null;
}
}
2.struts.xml
method="loadSonTree">
3.applicationContext.xml
4.test.js
var setting = {
async: {
enable: true,
url: "json/loadZTree.action",
autoParam: ["id"]
},
asyncParamOther: [],
expandSpeed: fast,
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId",
rootPid: "-2"
}
},
callback: {
onClick: treeNodeClick
}
};
$(document).ready(function() {
$.fn.zTree.init($("#treeDemo"), setting);
});
function treeNodeClick(event,treeId,treeNode){
twoID = treeNode.id;
var params = {"twoID": twoID};
$.ajax({
url: "json/loadSonTree.action",
type: "post",
dataType: "json",
data: params,
cache: false,
error: function(e){e.getMessage();},
success: function(jsonArray){
var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
var newNodes = jsonarray;
treeObj.addNodes(treeNode, newNodes);
}
});
}
5.test.jsp
...
Web.Config中: -----------------------------------------------------------------------------------------------
实现基于Ajax 的无限级菜单 特点: 支持Form 的无闪提交(方法有点笨) 支持MVC框架,即支持传统网页架构 多线程并发请求(要语言支持线程) 动态加载文件,只加载有用的!处理了Ajax 框架臃肿的JS 文件问题采用no table 的全div + css 布局 a.获得XMLHTTPReque对象,网上到处都找得到了,不多说:function newXMLHttpRequest() { var xmlreq = false; if (window.XMLHttpRequest) { xmlreq = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { xmlreq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e1) { try { xmlreq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { } } } return xmlreq; 这里提供一个通用的支持多浏览器的方法。
b. 提出异步请求 // 这里用Bcandy 作为方法名是为了感谢一个对我来说很重要的人,她一直在支持我 function Bcandy(Tid,url,parm,js) { if(url == ""){ return; } // 这是一个加载信息提示框,也可以不要! document.getElementById("load").style.visibility = "visible"; // 加载相应页面的JS 文件 if(js != null){ //加载JS文件 LoadJS(js); } // 获取一个XMLHttpRequest 实例 var req = newXMLHttpRequest(); // 设置用来从请求对象接收回调通知的句柄函数 var handlerFunction = getReadyStateHandler(req,Tid); req.onreadystatechange = handlerFunction; // 第三个参数表示请求是异步的 req.open("POST", url, true); // 指示请求体包含form 数据 req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // 发送参数 req.send(parm);
a {text-decoration:none;} a,a:visited {color:#000;background:inherit;} body {margin:0;padding:20px;font:12px tahoma,宋体,sans-serif;} dt {font-size:22px;font-weight:bold;margin:0 0 0 15px;} dd {margin:0 0 0 15px;} h4 {margin:0;padding:0;font-size:18px;text-align:center;} p {margin:0;padding:0 0 0 18px;} p a,p a:visited {color:#00f;background:inherit;} /*CNLTreeMenu Start*/ .CNLTreeMenu img.s {cursor:pointer;vertical-align:middle;} .CNLTreeMenu ul {padding:0;} .CNLTreeMenu li {list-style:none;padding:0;} .Closed ul {display:none;} .Child img.s {background:none;cursor:default;} #CNLTreeMenu1 ul {margin:0 0 0 17px;} #CNLTreeMenu1 img.s {width:20px;height:15px;} #CNLTreeMenu1 .Opened img.s {background:url(skin1/opened.gif) no-repeat 0 0;} #CNLTreeMenu1 .Closed img.s {background:url(skin1/closed.gif) no-repeat 0 0;} #CNLTreeMenu1 .Child img.s {background:url(skin1/child.gif) no-repeat 3px 5px;} #CNLTreeMenu2 ul {margin:0 0 0 17px;} #CNLTreeMenu2 img.s {width:17px;height:15px;} #CNLTreeMenu2 .Opened img.s {background:url(skin2/opened.gif) no-repeat 4px 6px;} #CNLTreeMenu2 .Closed img.s {background:url(skin2/closed.gif) no-repeat 3px 6px;} #CNLTreeMenu2 .Child img.s {background:url(skin2/child.gif) no-repeat 3px 5px;} #CNLTreeMenu3 ul {margin:0 0 0 17px;} #CNLTreeMenu3 img.s {width:34px;height:18px;} #CNLTreeMenu3 .Opened img.s {background:url(skin3/opened.gif) no-repeat 0 1px;} #CNLTreeMenu3 .Closed img.s {background:url(skin3/closed.gif) no-repeat 0 1px;} #CNLTreeMenu3 .Child img.s {background:url(skin3/child.gif) no-repeat 13px 2px;} /*CNLTreeMenu End*/ /*Temp CSS for View Demo*/ #CNLTreeMenu1,#CNLTreeMenu2,#CNLTreeMenu3 {float:left;width:249px;border:1px solid #99BEEF;background:#D2E4FC;color:inherit;margin:3px;padding:3px;} #CNLTreeMenu1,#CNLTreeMenu2 {padding-bottom:15px;} .ViewCode { clear:both; border:1px solid #FFB900;background:#FFFFCC;color:inherit;margin:3px;padding:3px; } .ViewCode h6 {color:#00f;}
今天我们开始学习《十天学会web标准(div+css)》的纵向导航菜单及二级弹出菜单,包含以下内容和知识点: ■纵向列表 ■标签的默认样式 ■css派生选择器 ■css选择器的分组 ■纵向二级列表 ■相对定位和绝对定位 一、纵向列表 纵向列表或称为纵向导航,在网站的产品列表中应用比较广泛,如淘宝网左侧的淘宝服务,今天我们就学习一下纵向导航的制作 先新建一个页面,然后插入一个ID为menu的div,然后在设计视图中选中文字,点击工具栏的ul图标,即会自动插入ul和li,然后修改文字内容为你需要的内容。
从预览的效果上看,四周都有很大的空隙,而且每一行前边还有个点,这是因为标签的默认样式造成的,下面我们需要创建样式表把标签的默认样式给清除掉生成的css代码如下: 下面我们定义一下全局的字体,字号,行距等,点击css样式面板上的新建按钮,在弹出的窗口中选择器类型选择标签,名称选择body,然后在css编辑器中设置如下图所示属性 body全局样式定义后,下面我们给#menu定义一个灰色的1px边框及宽度,然后把li定义下背景色和下边框及内边距等 接下来定义li的背景色为浅灰色及下边框和内边距 这些属性设置完后,一个简单的纵向列表菜单初具模型了。因为导航菜单,需要链接到其它页面,下边把这些导航加上链接,然后在定义a的状态和鼠标划过状态。 要添加链接,先选择要添加链接的文字,然后在属性页面链接上输入要链接的页面址,我这里输入个#,是个虚拟链接,不指向任何页面。
最简单jQuery实现二级省市级联,三级级联可依此扩展 1.首先需要引入jQuery 2.取出省份下拉列表对象,当省份下拉列表域发生改变时,执行如下方法 3.该方法解析:取出省份下拉列表对象,和被选中的option文本,取出城市下拉列表对象,并清空城市所有option,根据省份被选中的option内的文本,来填充不同的城市,由此实现二级联动。 (3)第三步编程WebFXTreeItem以产生出菜单 var treeRoot = new WebFXTree('蓝梦BBS论坛后台管理菜单'); var tree_userInfoManaeFolder = new WebFXTreeItem("用户信息管理") var forwardQueryUserInfoItem=new WebFXTreeItem("查询一般用户信息"); forwardQueryUserInfoItem.action=' Excel简单制作一级、二级、三级及多级联动下拉菜单 Excel2003巧用数据有效性和INDIRECT函数简单制作一级、二级、三级及多级联动下拉菜单 一、Excel一级下拉菜单制作 例如在A1:A10单元格制作一个下拉列表菜单,步骤如下: 选中A1:A10单元格,选择“数据—有效性”,进行如图所示设置即可,其中来源中的每一项要用英文逗号隔开。 设置好以后,在A1:A10单元格就能进行下拉选择了,如图所示: 二、Excel二级下拉菜单制作 例如在A1:A10和B1:B10单元格制作二级联动下拉列表菜单,步骤如下: 1、在表中输入需联动下拉选择的信息,如图所示(其中省份是一级下拉选项,市名是二级下拉选项): 2、选中E1:F1单元格,选择“插入—名称—定义”,输入名称如“省份”,如图示: EXCEL 2007如下: 3、选中E1:F3单元格,选择“插入—名称—指定—首行”,如图所示: EXCEL 2007如下: 4、选中A1:A10单元格,选择“数据—有效性”,进行如图所示设置即可,其中来源中输入=省份 5、选中B1:B10单元格,选择“数据—有效性”,进行如图所示设置即可,其中来源中输入=INDIRECT($A1) 设置好以后,在A1:A10和B1:B10单元格就能实现联动下拉选择了,如图所示: 三、Excel三级下拉菜单制作 例如在A1:A10和B1:B10和C1:C10单元格制作三级联动下拉列表菜单,步骤如下: 1、在表中输入需联动下拉选择的信息,如图所示(其中省份是一级下拉选项,市名是二级下拉选项,县名是三级下拉选项): 2、选中E1:F1单元格,选择“插入—名称—定义”,输入名称如“省份”,如图所示: EXCEL 2007如下: 3、选中E1:F3单元格,选择“插入—名称—指定—首行”,如图所示: EXCEL 2007如下: 主页面jilian.php Excel简单制作一级、二级、三级及多级联动下拉菜单
jquery ajax +php 级联列表