再次发贴求助动态二级菜单的实现

ruolins 2010-06-11 02:03:03

<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%#Eval("column_cat_id")%>' Visible="false"></asp:Label>
<li><a href="#"><%# Eval("column_cat_title")%></a>
<ul id="treeView" style='display:<%# getstyle(Eval("column_cat_id").ToString()) %>'>
<asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate>
<li><a href='product.aspx?id=<%#Eval("column_cat_id")%>' target="_parent"><img src="images/xiaohui.jpg" /><%#Eval("column_cat_title")%></a></li>
</ItemTemplate>
</asp:Repeater>
</ul>
</li>
</ItemTemplate>
</asp:Repeater>

这个事我的前台代码我像实现这样的效果

栏目1
栏目1-1
栏目1-2
栏目1-3
栏目1-4
栏目2
栏目2-1
栏目2-2
栏目2-3
栏目2-4
栏目3
栏目3-1
栏目3-2
栏目3-3
栏目3-4
所有的数据都是动态的这样的菜单
开始我用Jquery做但是每次刷新的时候不能保持状态
比如我点击栏目2一个子菜单项的时候按道理刷新后应该其他的两个栏目关闭只保持栏目2的菜单项,
但是每次刷新后都是只显示栏目1的菜单项,这个问题弄了很久。。。大家帮帮忙
...全文
525 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
子夜__ 2010-06-11
  • 打赏
  • 举报
回复
 <td style="width: 100%">
<iframe id="mainFrame" name="mainFrame" style="height: 100%; visibility: inherit;
width: 100%; z-index: 1" scrolling="auto" frameborder="0" src="Product.aspx"></iframe>
</td>


Product.aspx改成你右边要显示的内容.
子夜__ 2010-06-11
  • 打赏
  • 举报
回复
新建立一个页面命名Default.aspx

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<html>
<head>


<title><%--<%=FrameName %>--%>小叶子</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
.navPoint
{
font-family: Webdings;
font-size:9pt;
color:white;
cursor:pointer;
}
p{
font-size:9pt;
}

.font_size { font-family: "Verdana", "Arial", "Helvetica", "sans-serif"; font-size: 12px; font-weight: normal; font-variant: normal; text-transform: none}
</style>
</head>
<body scroll="no" leftmargin="0" topmargin="0" marginheight="0" marginwidth="0">
<table border="0" cellspacing="0" cellpadding="0" width="100%" height="100%">

<%
switch (MenuStyle)
{
case 0:
%>
<tr>
<td id="frmTitle" name="frmTitle" nowrap="nowrap" valign="middle" align="center"
width="198" style="border-right: 1px solid #000000">
<iframe name="BoardTitle" style="height: 100%; visibility: inherit; width: 198; z-index: 2"
scrolling="auto" frameborder="0" src="left.aspx"></iframe>
</td>
<td style="width: 10pt" bgcolor="#7898A8" title="关闭/打开左栏" class="navPoint">
<table border="0" cellpadding="0" cellspacing="0" width="11" height="100%" align="right">
<tr>
<td valign="middle" align="right" class="middleCss" style="width: 13px">
<img border="0" src="images/Menu/close.gif" id="menuimg" alt="隐藏左栏" onmouseover="javascript: menuonmouseover();"
onmouseout="javascript: menuonmouseout();" onclick="javascript:switchSysBar()"
style="cursor: hand" width="11" height="76" /></td>
</tr>
</table>
</td>
<td style="width: 100%">
<iframe id="mainFrame" name="mainFrame" style="height: 100%; visibility: inherit;
width: 100%; z-index: 1" scrolling="auto" frameborder="0" src="Product.aspx"></iframe>
</td>
</tr>
<%
break;
case 1:

%>
<%--测试--%>
<%
break;
case 2:
%>
<%-- 测试--%>
<%
break;

}
%>

</table>
</body>
</html>


<script language="JavaScript" type="text/javascript">

var DispClose = true;

function CloseEvent()
{
if (DispClose)
{
return "是否离开当前页面?";
}
}
 window.onbeforeunload=CloseEvent;
 
 
rnd.today=new Date();

rnd.seed=rnd.today.getTime();

function rnd() {

    rnd.seed = (rnd.seed*9301+49297) % 233280;

    return rnd.seed/(233280.0);

};

function rand(number) {

    return Math.ceil(rnd()*number);

};

function AlertMessageBox(Messages)
{
DispClose = false;
window.location.href = location.href+"?"+rand(1000000);
alert(Messages);
}

var var_frmTitle = document.getElementById("frmTitle");
var var_menuimg = document.getElementById("menuimg");

function switchSysBar(){

if (var_frmTitle.style.display=="none") {
var_frmTitle.style.display=""
var_menuimg.src="images/Menu/close.gif";
var_menuimg.alt="隐藏左栏"
}
else {
var_frmTitle.style.display="none"
var_menuimg.src="images/Menu/open.gif";
var_menuimg.alt="开启左栏"
}



}

function menuonmouseover(){
if (var_frmTitle.style.display=="none") {
var_menuimg.src="images/Menu/open_on.gif";
}
else{
var_menuimg.src="images/Menu/close_on.gif";
}
}
function menuonmouseout(){
if (var_frmTitle.style.display=="none") {
var_menuimg.src="images/Menu/open.gif";
}
else{
var_menuimg.src="images/Menu/close.gif";
}
}
if(top!=self)
{
top.location.href = "default.aspx";
}

</script>
wuyq11 2010-06-11
  • 打赏
  • 举报
回复
在路径中使用Page.ResolveUrl
ruolins 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 wxr0323 的回复:]
你在你的页面里加上

HTML code
<iframe id="mainFrame" name="mainFrame" style="height: 100%; visibility: inherit;
width: 100%; z-index: 1" scrolling="auto" frameborder="0" src="product.as……
[/Quote]
在那个页面啊没有用过iframe 这个东西
子夜__ 2010-06-11
  • 打赏
  • 举报
回复
你在你的页面里加上
<iframe id="mainFrame" name="mainFrame" style="height: 100%; visibility: inherit;
width: 100%; z-index: 1" scrolling="auto" frameborder="0" src="product.aspx"></iframe>


linkinwhite 2010-06-11
  • 打赏
  • 举报
回复
别想啦,看世界杯去
ruolins 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wuyq11 的回复:]
<%=Page.ResolveUrl("~/left.aspx")%>
[/Quote]
能说详细点吗,
wuyq11 2010-06-11
  • 打赏
  • 举报
回复
<%=Page.ResolveUrl("~/left.aspx")%>
ruolins 2010-06-11
  • 打赏
  • 举报
回复
疯狂了。。。。该怎么跳转
ruolins 2010-06-11
  • 打赏
  • 举报
回复
我没有用框架
我吧left。aspx作为左侧导航页面然后product.aspx是右边的页面内容页
lishuai1030 2010-06-11
  • 打赏
  • 举报
回复
frames["框架名"] ,你框架的名字是product么
ruolins 2010-06-11
  • 打赏
  • 举报
回复
window.parent.frames["product"].location.href=Url的时候还是为空
ruolins 2010-06-11
  • 打赏
  • 举报
回复
我的主窗体是product.aspx,
但是我写window.parent.frames["product"].location=Url; 的时候出现脚本错误!

window.parent.frames。product对象为空。。。
纳闷了
ruolins 2010-06-11
  • 打赏
  • 举报
回复
window.parent.frames["mainFrame"].location=Url;
这个是什么意思啊???
皇城龙三 2010-06-11
  • 打赏
  • 举报
回复
ASP.NET二级联动菜单的实现
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
cate_bind();
}


}
public void cate_bind()
{
adosql addproado = new adosql();
string sqlstr = "select category,categoryid from category";
DataSet test = addproado.todateset(sqlstr);
category.DataSource = test;
category.DataTextField = "category";
category.DataValueField = "categoryid";
category.DataBind();

}
public void category_SelectedIndexChanged(object sender, EventArgs e)
{
Label1.Text =category.SelectedValue.ToString();

adosql cate_chang = new adosql();
string str_chang = "select sortsid,sortname from sorts where categoryid=" + category.SelectedValue.ToString();
sorts.DataSource = cate_chang.todateset(str_chang);
sorts.DataTextField = "sortname";
sorts.DataValueField = "sortsid";
sorts.DataBind();
}
}
注意的是要在页面中将droplist控件添加属性autopostback=true

wosizy 2010-06-11
  • 打赏
  • 举报
回复
去看看..............
基于数据库的三级菜单实现(二级同理)
http://www.web521.com/asp/57468/T65733.shtml

用层制作动态二级菜单
http://www.cnblogs.com/villison/archive/2007/09/26/906716.html
ruolins 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wxr0323 的回复:]
图片下载地址
忘记设置下载分数了。。
[/Quote]
谢谢了哈。我看看。。。
子夜__ 2010-06-11
  • 打赏
  • 举报
回复
图片下载地址
忘记设置下载分数了。。
子夜__ 2010-06-11
  • 打赏
  • 举报
回复
我给你一个我以前用的二级吧
先建立一个left.aspx
代码如下
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="left.aspx.cs" Inherits="left" %>


<html>
<head>
<title>-后台管理</title>
<style type="text/css">
.ttl { CURSOR: pointer; COLOR: #ffffff; PADDING-TOP: 4px }
A:active{COLOR: #000000;TEXT-DECORATION: none}
A:hover{COLOR: #000000;TEXT-DECORATION: none}
A:link{COLOR: #000000;TEXT-DECORATION: none}
A:visited{COLOR: #000000;TEXT-DECORATION: none}
TD {
FONT-SIZE: 12px; FONT-FAMILY: "Verdana", "Arial", "细明体", "sans-serif"
}
.table_body {
BACKGROUND-COLOR: #EDF1F8;
height:18px;
CURSOR: pointer;
}

.table_none {
BACKGROUND-COLOR: #FFFFFF;
height:18px;
CURSOR: pointer;
}

</style>

<script language="javascript">
function showHide(obj){
var oStyle = document.getElementById(obj).style;
oStyle.display == "none" ? oStyle.display = "block" : oStyle.display = "none";
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body bgcolor="#9aadcd" leftmargin="0" topmargin="0">
<br>
<asp:Repeater ID="LeftMenu" runat="server" OnItemDataBound="LeftMenu_ItemDataBound">
<ItemTemplate>
<table cellspacing="0" cellpadding="0" width="159" align="center" border="0">
<tr>
<td width="23">
<img height="25" src="images/Menu/box_topleft.gif" width="23"></td>
<td class="ttl" onclick="JavaScript:showHide('M_<%# Eval("M_ID")%>');" width="129"
background="images/Menu/box_topbg.gif">
<%# Eval("M_Name")%>
</td>
<td width="7">
<img height="25" src="images/Menu/box_topright.gif" width="7"></td>
</tr>
</table>
<table id="M_<%# Eval("M_ID")%>" style="display: none" cellspacing="0" cellpadding="0"
width="159" align="center" border="0">
<tr>
<td background='images/Menu/box_bg.gif' height="0px" width='159' colspan='3'>
<table width="157" border="0" cellpadding="2" cellspacing="1">
<tbody>
<asp:Repeater ID="LeftMenu_Sub" runat="server">
<ItemTemplate>
<tr>
<td class="table_none" onclick="javascript:NowShow('M_<%# Eval("M_ID")%>','<%# Eval("M_Url")%>');" onmousemove="javascript:TDOverORIn('M_<%# Eval("M_ID")%>');" onmouseout="javascript:TDOverOROut('M_<%# Eval("M_ID")%>');" id="M_<%# Eval("M_ID")%>">
<img height='7' hspace='5' src='images/Menu/arrow.gif' width='5' align="bottom">
<%# Eval("M_Name")%>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
</table>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" width="159" align="center" border="0">
<tr>
<td colspan="3">
<img height='10' src='images/Menu/box_bottom.gif' width='159'></td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
</body>
</html>
<script language="javascript">
var NowClickName="";

function NowShow(TopMenuName,Url)
{
document.getElementById(TopMenuName).className = "table_body";
if (NowClickName!="" &&NowClickName!=TopMenuName)
document.getElementById(NowClickName).className = "table_none";
NowClickName = TopMenuName;
//var o=window.open(url);
window.parent.frames["mainFrame"].location=Url;
//parment.mainFrame.src=Url;
}

function TDOverOROut(iname)
{
if (NowClickName!=iname)
{

document.getElementById(iname).className = "table_none";

}
}
function TDOverORIn(iname)
{
if (NowClickName != iname)
{
document.getElementById(iname).className = "table_body";
}
}
</script>


后台代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

//using Menu;
//using Menu.Components;


public partial class left : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
BindMenu();
}

#region "绑定主菜单"
/// <summary>
/// 绑定主菜单
/// </summary>
private void BindMenu()
{

//2010年6月5日 封装动态菜单

//代码测试阶段 待封装2009-10-21
SqlConnection cn = new SqlConnection();
cn.ConnectionString = "server=.;database=TESDB2000;uid=sa;pwd=sa";
string CommandText = "select * from Menu where M_Fid=0";//取出父菜单 数据库里的父ID为0
SqlCommand cmd = new SqlCommand(CommandText, cn);
SqlDataReader dr = null;
DataTable dt = new DataTable();
cn.Open();
using (dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(dr);
}

}
#endregion

#region "绑定子菜单"
/// <summary>
/// 绑定子菜单事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void LeftMenu_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
int nParentID = Convert.ToInt32(((DataRowView)e.Item.DataItem).Row["M_ID"]);
SqlConnection cn = new SqlConnection();
cn.ConnectionString = "server=.;database=TESDB2000;uid=sa;pwd=sa";
//取出父ID为nParentID 下的所有子项
string CommandText = "select * from Menu where M_Fid='" + nParentID + "'";

SqlCommand cmd = new SqlCommand(CommandText, cn);
SqlDataReader dr = null;
DataTable dt = new DataTable();
cn.Open();
using (dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(dr);
}
Repeater LeftSubID = (Repeater)e.Item.FindControl("LeftMenu_Sub");
LeftSubID.DataSource = dt;
LeftSubID.DataBind();



}


#endregion
}



代码没有封装 你自己封装一下吧。然后可以在iframe中使使用此页做left。。
图片我正在传一会跟帖给地址
ruolins 2010-06-11
  • 打赏
  • 举报
回复
怎么没人啊,,,顶顶
加载更多回复(1)

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧