就是我有一个无限级分类的表,这个表的表名是sort,字段有:
sort_id 自动增长
sort_name 类别名称
parentID 父类ID,
sortpathID 类别ID
sortPathName 类别名称
sort_num 属于第几层次
该如何编写javabean来递归(或非递归)的读取这个表的数据,并在下拉框中以树型的显示出来呢??多谢!!!
sort_id 自动增长
sort_name 类别名称
parentID 父类ID,
sortpathID 类别ID
sortPathName 类别名称
sort_num 属于第几层次
该如何编写javabean来递归(或非递归)的读取这个表的数据,并在下拉框中以树型的显示出来呢??多谢!!!
<script LANGUAGE=JavaScript>
<!--
var name=new Array();
<%
for(int i=0;i<parrStsUserList.size();i++)
{
pobjCp = (Cp)parrStsUserList.get(i);
out.println("name["+i+"]=new Array('"+pobjCp.getCpID()+"','"+pobjCp.getCpname()+"','"+pobjCp.getCpuseid()+"');");
}
%>
-->
</script>
getCpID是ID,getCpname是名字(北京),getCpuseid是他的父结点是哪个ID
现在开始循环读组
for(i=0;i<name.length;i++)
{
if(name[i][2]==0)//当getCpuseid为0时也就是为父结点时
{
Form.select.add(new Option(name[i][0],name[i][1]));//用数组的值给select建个新Option
//name[i][0],name[i][1]这两个到底是哪个在前面哪个在后面你试一下,我忘了
for(x=0;x<name.length;x++)//重新循环读数组找name[i]的子结点
{
if(name[x][2]==name[i][0])//当getCpuseid为name[i][0])时
{
Form.select.add(new Option(name[x][0],name[x][1]));//用数组的值给select建个新Option
for(y=0;y<name.length;y++)//重新循环读数组找name[x]的子结点
{
if(name[y][2]==name[x][0])//当getCpuseid为name[x][0])时
{
Form.select.add(new Option(name[y][0],name[y][1]));//用数组的值给select建个新Option
}
}
}
}
}
}
基本上就是这样,你试试
还有你有分层,就是子结点有缩进
Form.select.add(new Option(name[y][0]," "+name[y][1]));
也就是在<Option value=name[y][0]> name[y][1]</option>就是在前面加几个空格就行了这个是在JSP页面上用JS来完成的,你说要在BEAN里完成这个,其实一样,就是把数据库取出后排列存入类中,然后在前台把这个类里的值赋给SELECT就行了
for(i=0;i<name.length;i++)
{
if(name[i][2]==userid)//当getCpuseid为0时也就是为父结点时
{
Form.select.add(new Option(name[i][0],name[i][1]));
check(name[i][0]);
}
}
}
}
check(0);//递归调用check函数,这个0就是一开始找父结点
你先试试,我没测试过
<%@ include file="incdb.jsp"%>
<%@ include file="session.jsp"%>
<%
//查询所有大类以树型显示在下拉列表框
Vector listsort = new Vector();
DisSort dissort = new DisSort(); listsort=dissort.allSort();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
<title>广州凯澳贸易有限公司-(中文版)婚纱后台管理系统</title>
<link rel="stylesheet" href="images/css.css" type="text/css" media="screen"><script Language="JavaScript">
<!--
function check_input(theForm)
{ if (theForm.sortname.value == "")
{
alert("请输入类别名称.");
theForm.sortname.focus();
return (false);
} if (theForm.sortname.value.length > 45)
{
alert("部门名称长度应小于22个字符或数字.");
theForm.sortname.focus();
return (false);
}
}
function check(userid,name){
var Form = document.getElementById("add")
for(i=0;i<name.length;i++)
{
if(name[i][2]==userid)//当getCpuseid为0时也就是为父结点时
{
Form.sort_id.add(new Option(name[i][0],name[i][1]));
check(name[i][0],name);
}
}
}
<!--
function load(){
var name=new Array();
<%
for(int i=0;i<listsort.size();i++)
{
Sort sort = (Sort)listsort.get(i);
out.println("name["+i+"]=new Array('"+sort.getSort_id()+"','"+sort.getSort_name()+"','"+sort.getParentID()+"');");
System.out.println("111111111");
}
%>
check(0,name);
}
-->
}
//-->
</script>
</head>
<body topmargin=0 onLoad="load();">
<TABLE width=55% border="0" align=center cellpadding=6 cellspacing=1 class="tableBorder">
<form name="add" id="add" method="POST" action="sort_save.jsp" onSubmit="return check_input(this)" enctype="multipart/form-data">
<TR>
<Th colspan=2><div align="center">添加产品类别</span></div></th>
</TR> <TR bgcolor="#FFFFFF">
<TD class=forumrow width="30%">所属大类:</TD>
<TD class=forumrow width="70%"><select id=sort_id name=sort_id class="input">
<OPTION value="0">==根类==</OPTION></select>
</TD>
</TR>
<TR bgcolor="#FFFFFF">
<TD class=forumrow width="30%">类别名称:</TD>
<TD class=forumrow width="70%">
<input TYPE="text" name=sortname size=25 maxlength=25>
**不得超过 20 个汉字</TD>
</TR>
<TR bgcolor="#FFFFFF">
<TD class=forumrow width="30%">类别序号:</TD>
<TD class=forumrow width="70%">
<input TYPE="text" name=sort_order size=3 maxlength=10 value="1">
**不得超过 20 个汉字</TD>
</TR>
<TR bgcolor="#FFFFFF">
<TD class=forumrow width="30%">上传图片:</TD>
<TD class=forumrow width="70%"><span class="forumRow">
<input type="file" name="file">
</span></TD>
</TR>
<TR bgcolor="#FFFFFF"><TD class=forumrow height="45" colspan=2 align=center> <FONT color=#000000>
<INPUT name=Submit type=submit value="确 定">
<INPUT name=Submit2 type=reset value="清 除"></FONT></TD>
</TR>
</form>
</TABLE>liaohaiying(大菜) ,大侠你好,就是我用这个调用js,怎么报错说是“缺少对象”啊?郁闷。不知道是哪里出错了,麻烦帮我看一下,也请各位大侠帮小弟指导一下,小弟不胜感激,上面是代码,文件的名字叫sort_add.jsp
<!--
var name=new Array();
<%
for(int i=0;i<listsort.size();i++)
{
Sort sort = (Sort)listsort.get(i);
out.println("name["+i+"]=new Array('"+sort.getSort_id()+"','"+sort.getSort_name()+"','"+sort.getParentID()+"');");
}
%>
function check_input(theForm)
{ if (theForm.sortname.value == "")
{
alert("请输入类别名称.");
theForm.sortname.focus();
return (false);
} if (theForm.sortname.value.length > 45)
{
alert("部门名称长度应小于22个字符或数字.");
theForm.sortname.focus();
return (false);
}
}
function check(userid){
for(i=0;i<name.length;i++)
{
if(name[i][2]==userid)//当getCpuseid为0时也就是为父结点时
{
add.sort_id.add(new Option(name[i][0],name[i][1]));
check(name[i][0]);
}
}
}
check(0);
//-->
</script>
改成这样,name数组不用传的,用check(0);就行了,body里面也不用onload了