呵呵,结合JSP和JAVASCRIPT,可惜我没有,关注!
解决方案 »
- 这两个div为什么显示在同一行呢??????
- 将子窗体中的数据传回父窗体
- 用tomcat5.5.9 配置mysql4.1的连接池时出错!!!
- 小弟跪求java创建,编辑XML的方法,给出救我饭碗,能给出源代码的我给500分。
- struts标签在字符串中如何写
- 在线急等:access连接jsp,rison服务器的问题,100分相赠
- GB2312 和 GBK 这两种字符集有何区别?--------立即送分
- 我是东东树的妹妹,我有问题要问大家。jsp读数据库里的中文,读出来的是"?"怎么会事啊?
- java之JSP之SOS
- 极菜的问题,用jdbc-odbc桥访问Sqlserver总是出错?
- 一个连接SQLServer的问题
- 各位帮忙看看错在那里,告知解决之道
主目录:
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.Connection,com.data.DBConnect"%>
<html>
<head>
<title>网站结构</title>
<style type="text/css">
<!--
.txt1 {
font-size: 9pt;
color: #000000;
text-decoration: none;
}
.txt2 {
font-size: 9pt;
color: #669999;
text-decoration: none;
}
.tr1 {
margin: 0px;
padding: 0px;
border: none;
left: 0px;
top: 0px;
right: 0px;
bottom: 0px;
clip: rect(0px 0px 0px 0px);
}
-->
</style>
<script language="JScript">
function turnit(ss,ii,aa)
{
if (ss.style.display=="none")
{
ss.style.display="";
ii.src="/tree/t2.gif";
aa.style.display="";
}
else
{
ss.style.display="none";
ii.src="/tree/t1.gif";
aa.style.display="none";
}
}
function maingo(part_id,part_name)
{
parent.mainFrame.location="/part/part_util.jsp?part_id="+part_id;
}
function mainto()
{
parent.mainFrame.location="/part/part_util.jsp?part_id=-1";
}
</script>
</head>
<body onLoad="mainto()">
网站结构
<%
Connection con=new DBConnect().getConn();
request.setAttribute("con",con);
request.setAttribute("part_main_id","-1");
request.getRequestDispatcher("part.jsp").include(request,response);
%>
</body>
</html>//part.jsp
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.Connection,com.model.*,com.database.*"%>
<table width="100%" border="0" cellpadding="3" cellspacing="2" bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="tr1">
<%
String part_main_id=(String)request.getAttribute("part_main_id");//?鬣???ID
String imgnum=(String)request.getAttribute("imgstr");
Connection con=(Connection)request.getAttribute("con");
PartDB pd=new PartDB();
String imgstr="";
if(imgnum==null||imgnum.equals(""))
{
imgstr="";
}
PartVector pv=pd.executeQueryMain(con,part_main_id);
PartModel pm=null;
for(int i=0;i<pv.size();i++)
{
pm=pv.get(i);
String part_id=pm.getPart_id();
String part_name=pm.getPart_name();
String issubschema=pm.getIssubschema();
if(issubschema!=null&&issubschema.equals("0")){//?T左???2|囗
%>
<tr>
<td height="26" bgcolor="#E1E1E1" class="txt2"><%=imgstr%><img src="/tree/treeimg/dot.gif" width="12" height="12"></td>
<td width="505" bgcolor="#E1E1E1" onClick="maingo('<%=part_id%>','<%=part_name%>')" style="cursor:'hand'"><%=part_name%></td>
</tr>
<%}else{//驞左???2|囗
String content1="content"+part_id;
String img1="img"+part_id;
String aux1="aux"+part_id;%>
<tr>
<td height="26" bgcolor="#E1E1E1" class="txt1" style="cursor:'hand';" onmouseup="turnit(<%=content1%>,<%=img1%>,<%=aux1%>);" language="JScript">
<%=imgstr%><img src="/tree/t1.gif" width="12" height="12" ID="<%=img1%>">
</td>
<td bgcolor="#E1E1E1" onClick="maingo('<%=part_id%>','<%=part_name%>')" style="cursor:'hand'"><%=part_name%></td>
</tr>
<tr>
<td width="22" height="26" bgcolor="#E1E1E1" class="tr1" ID="<%=aux1%>" STYLE="Display:'none';">
</td>
<td bgcolor="#E1E1E1" ID="<%=content1%>" STYLE="Display:'none';">
<%
request.setAttribute("con",con);
request.setAttribute("imgstr","1");
request.setAttribute("part_main_id",part_id);
request.getRequestDispatcher("/tree/part.jsp") .include(request,response);
%>
</td>
</tr>
<%}
}
%>
</table>
我把最开始的ID设为-1,即:上级ID为-1的是第一级的,
也就是这句是开头:
Connection con=new DBConnect().getConn();
request.setAttribute("con",con);//连数据库比较费时,所以我把所有的页面用一个连接,而把连接传递过去.
request.setAttribute("part_main_id","-1");
request.getRequestDispatcher("part.jsp").include(request,response);
//也就是先找到上级ID是-1的儿子part.jsp的作用就是找到相应上级ID相应的所有儿子.在part.jsp中也有一句:
先检测该栏目是否有儿子(我用的这个的目的主要是为了显示不同图片时用的,不想检索数据库太多次,如果都显示成一样的图片处理,这一块可以不要,而检测这一上级ID的栏目的记录是否存在,如果不存在就不往下递归).如果有
request.setAttribute("con",con);
request.setAttribute("imgstr","1");
request.setAttribute("part_main_id",part_id);
request.getRequestDispatcher("/tree/part.jsp") .include(request,response);//它是递归用的,如果有子栏目,那么就再递归找到它的儿子.
part.jsp中的解释一下:String part_main_id=(String)request.getAttribute("part_main_id");//获得上级ID,是从上面传来的.
String imgnum=(String)request.getAttribute("imgstr");//获得显示图片,根据情况,可以自己定,也可以不要.
Connection con=(Connection)request.getAttribute("con");//获得链接,由上面传来.
PartDB pd=new PartDB();
String imgstr="";
if(imgnum==null||imgnum.equals(""))
{
imgstr="";
}
PartVector pv=pd.executeQueryMain(con,part_main_id);//获得数据,你可以替换成自己的数据.这可以是成批的,我用Vector
PartModel pm=null;//单个数据.
for(int i=0;i<pv.size();i++)
{
pm=pv.get(i);//获得记录中的一个,你可以替换成你的.
String part_id=pm.getPart_id();//ID
String part_name=pm.getPart_name();//名字
String issubschema=pm.getIssubschema();//是否有儿子
if(issubschema!=null&&issubschema.equals("0")){//如果没有儿子.
......
}else{
//如果有儿子
.....
request.setAttribute("con",con);
request.setAttribute("imgstr","1");
request.setAttribute("part_main_id",part_id);//把本ID作为下一级的上级ID递归下去.
request.getRequestDispatcher("/tree/part.jsp") .include(request,response);
......
}
兄弟,你的页面代码中有乱码哦。不过至少我看出了点思路。谢谢先。
看后面写的解释比较好点,代码写的乱.
根据一个或者多个栏目,将他们和他们的字栏目显示出来,不能够重复栏目!我曾经做过这个用java写成类或者bean比较好!循环会很多!
另外,100分我结贴的时候会给你。