| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1440 人关注过本帖
标题:请教yms123,谢谢!
取消只看楼主 加入收藏
princes
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-5-24
收藏
 问题点数:0 回复次数:13 
请教yms123,谢谢!

请教yms123:
yms123你好!看了你对二级菜单的答复及源代码,非常感谢。但是我为了好看一些(主要是为了看起来方便,比较习惯这样的方式),进行了修改,但是修改后拿取出来的子菜单却只能显示第一条(response出来记录数也为三条),其他的不能显示。请帮忙,谢谢!代码如下:

<%
dim cn,rs,tablenum,strMenuID,I,J,strSonMenu
set cn = Server.CreateObject("Adodb.Connection")
cn.open "Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User ID=sa;Initial Catalog=lctdata;Data Source=localhost"
Set rs = Server.CreateObject("Adodb.Recordset")
Set rs1 = Server.CreateObject("Adodb.Recordset")
'rs.open "select A.*,B.* from Menu_Role A,Menu_Info B where Role_User='" & strLoginName & "'",cn,1,3
rs.open "select A.*,B.* from Menu_Role A,Menu_Info B where A.Role_ID=B.Menu_ID and Parent_id=0 and A.Role_User='" & strLoginName & "'",cn,1,1

%>
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language=javascript>
function ShowLayer(index)
{
if(this.Layer(index).style.display=="none")
{
this.Layer(index).style.display="block";
}
else
{
this.Layer(index).style.display="none";
}
}
</script>
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="">

<table width="41%" border="0" height="116" id="table1">
<%
if not rs.eof then
rs.movefirst
for I=1 to rs.recordcount
strSonMenu = rs("menu_id")

%>
<tr>
<td><a href=# onclick=ShowLayer(0);><%=rs("menu_name")%>菜单一</a></td>
</tr>
<%
response.write strSonMenu
if rs1.state=1 then rs1.close
rs1.Open "select * From menu_info Where Parent_id='" & strSonMenu & "'",cn,1,1
IF Not rs1.EOF Then
for j=1 to rs1.recordcount
%>
<tr>
<td>
<div style=display:none; id=Layer><img src="child.gif"><%=rs1("menu_name")%></div>
</td>
</tr>
<% rs1.MoveNext
next
End IF
rs.MoveNext
next
end if%>
</table>

</form>
</body>
</html>

搜索更多相关主题的帖子: 子菜单 源代码 
2006-05-25 13:51
princes
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-5-24
收藏
得分:0 
yms123:
你好!
我的子菜单和主菜单都是在一个表里,其中主菜单的parent_id为0,如果为子菜单,那么parent_id就为它父菜单的ID。数据表是这样的:Menu_ID,Parent_ID,Menu_Name,Link_File

[此贴子已经被作者于2006-5-25 15:06:17编辑过]

2006-05-25 15:04
princes
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-5-24
收藏
得分:0 
yms123:

你好!还是不行,请问你那边行吗?
2006-05-26 12:02
princes
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-5-24
收藏
得分:0 
就是上面你贴的哪个代码,循环的时候,子菜单还是只能出现一个(我的总共有三个子菜单),其他的两个子菜单不能出现
2006-05-26 14:07
princes
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-5-24
收藏
得分:0 

yms123:
你好!
下面是我的全部代码,我在子菜单的循环中可以response所有的子菜单是3个,但是显示却只显示第一个子菜单,其他两个子菜单没有什么反应,也不会多出一空行。数据库结构我的主菜单和子菜单在同一个表中,表里面有menu_Id,parent_ID,menu_name 如果为0那么menu_id就没有子菜单,如果parent_id不为零,那么他的父菜单ID就为menu_id的编号,菜单名就是后面menu_name的值:
<%
dim cn,rs,tablenum,strMenuID,I,J,strSonMenu,strLoginName
set cn = Server.CreateObject("Adodb.Connection")
cn.open "Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User ID=sa;Initial Catalog=lctdata;Data Source=localhost"
Set rs = Server.CreateObject("Adodb.Recordset")
Set rs1 = Server.CreateObject("Adodb.Recordset")
strLoginName="zhang"
'rs.open "select A.*,B.* from Menu_Role A,Menu_Info B where Role_User='" & strLoginName & "'",cn,1,3
rs.open "select A.*,B.* from Menu_Role A,Menu_Info B where A.Role_ID=B.Menu_ID and Parent_id=0 and A.Role_User='" & strLoginName & "'",cn,1,1
%>
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<script language=javascript>
function ShowLayer(index)
{
if(this.Layer(index).style.display=="none")
{
this.Layer(index).style.display="block";
}
else
{
this.Layer(index).style.display="none";
}
}
</script>
</head>
<table border="1" style="border-collapse: collapse" width="60%" id="table1">
<%
if not rs.eof then
rs.movefirst
Do Until rs.EOF
strSonMenu = rs("menu_id")
%>
<tr>
<td><a href=# onclick=ShowLayer(0);><%=rs("menu_name")%>菜单一</a></td>
</tr>
<%
response.write strSonMenu
if rs1.state=1 then rs1.close
rs1.Open "select * From menu_info Where Parent_id='" & strSonMenu & "'",cn,1,1
response.write rs1.recordcount
IF Not rs1.EOF Then
Do Until rs1.EOF
%>
<tr>
<td>
<div style=display:none; id=Layer><img src="child.gif"><%=rs1("menu_name")%></div>
</td>
</tr>
<% rs1.MoveNext
Loop
End IF
IF rs1.State=1 Then rs1.Close
rs.MoveNext
Loop
end if%>


</table>
</html>

[此贴子已经被作者于2006-5-26 14:37:28编辑过]

2006-05-26 14:34
princes
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-5-24
收藏
得分:0 
yms123:
你好!
是的,<td><a href=# onclick=ShowLayer(0);><%=rs("menu_name")%>菜单一</a></td>这个红色字的通过ShowLayer传回的index值我没有循环,这个地方我不太清楚怎么做循环,哈哈,因为上面那个js我是用你得写的。但是这个与下面的子菜单有关吗?我显示的子菜单的个数有三个啊,只是不能显示其他另外两个子菜单的名称。如果主菜单这里也需要做循环的话,那么请教yms123,应该怎么写?非常感谢!


2006-05-26 15:04
princes
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-5-24
收藏
得分:0 
谢谢yms123,现在的情况这样的,我的主菜单有两个,其中第一主菜单从数据库里来说有3个子菜单,第二个主菜单没有子菜单。现在通过修改后,点击第一个主菜单,第一主菜单展开,但是还是只有一个子菜单。点击第二个主菜单(没有子菜单),这时第一个主菜单出现两个子菜单,再点击的时候也就是主菜单应该关闭的时候,但是还是有一个子菜单出现,也就是不能实现关闭了。总是有一个子菜单出现。奇怪。
2006-05-26 15:31
princes
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-5-24
收藏
得分:0 

yms123:
你好!
怎么在浏览器里面看的源代码,无论是页面出现一个子菜单还是两个子菜单,里面显示的怎么都是三个子菜单?


<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<script language=javascript>
function ShowLayer(index)
{
if(this.Layer(index).style.display=="none")
{
this.Layer(index).style.display="block";
}
else
{
this.Layer(index).style.display="none";
}
}
</script>
</head>
<table border="1" style="border-collapse: collapse" width="60%" id="table1">

<tr>
<td><a href=# onclick=ShowLayer(0);>用户管理菜单一</a></td>
</tr>
23
<tr>
<td>
<div style=display:none; id=Layer><img src="child.gif">货币汇率设置</div>
</td>
</tr>

<tr>
<td>
<div style=display:none; id=Layer><img src="child.gif">票据类型设置</div>
</td>
</tr>

<tr>
<td>
<div style=display:none; id=Layer><img src="child.gif">上传图片文件</div>
</td>
</tr>

<tr>
<td><a href=# onclick=ShowLayer(1);>查看单据资料菜单一</a></td>
</tr>
60


</table>
</html>

2006-05-26 16:16
princes
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-5-24
收藏
得分:0 

这样就可以了,而且不要那个红色部分的循环<td><a href=# onclick=ShowLayer(0);也行。不过这样就没有那样看起来方便,哈哈!什么问题呢?

2006-05-26 23:20
princes
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-5-24
收藏
得分:0 

那其实也是和从数据库里面拿取数据是一样的啊?更何况在浏览器里面的源代码也是正确的,改后的代码也同样是循环,只不过改成由代码来打印出来的方式。所以还是有些费解。不知道你有没有不用代码输出的方式能够解决(就想我们12楼的那种方式)谢谢!

[此贴子已经被作者于2006-5-27 6:41:43编辑过]

2006-05-27 00:49
快速回复:请教yms123,谢谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021642 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved