大家好,做了一个后台管理,是windows xp左侧导航菜单,我把它做成了menu.ascx控件,加载到每个页面,用的是.net2003,现在的问题是,菜单初始状态是全部收起的,当打开一个功能页面后,部分菜单呈打开状态.例如:  文章管理
            新闻信息添加 |  管理
            文章信息添加 |  管理 当打开新闻信息添加后,菜单也呈打开状态,当提交新闻信息后,整体菜单又呈全部收起状态了.请问如何禁止提交后菜单收缩的状态.

解决方案 »

  1.   

    用 Cookie 保存菜单收缩状态
      

  2.   

    你把csdn左边的那个菜单看看;
    不知道你看后有什么感想;
    别把事情搞的那么复杂!!!!
      

  3.   


    .................谢谢,我先把menu.ascx的代码帖一下大家看看.
      

  4.   

    <HTML>
    <HEAD>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html;charset=gb2312">
    <LINK href="Inc/southidc.css" type="text/css" rel="stylesheet">
    <style type="text/css"> BODY { MARGIN: 0px; }
    .sec_menu { BORDER-RIGHT: white 1px solid; BACKGROUND: #d6dff7; OVERFLOW: hidden; BORDER-LEFT: white 1px solid; BORDER-BOTTOM: white 1px solid }
    .menu_title SPAN { FONT-WEIGHT: bold; LEFT: 10px; COLOR: #215dc6; POSITION: relative; TOP: 2px }
    .menu_title2 SPAN { FONT-WEIGHT: bold; LEFT: 10px; COLOR: #428eff; POSITION: relative; TOP: 2px }
    </style>
    </HEAD>
    <BODY>
    <div id="x" style="OVERFLOW:scroll;HEIGHT:200px" onscroll="SetH(this)">
    <table cellSpacing="0" cellPadding="0" width="158" align="center">
    <tr>
    <td valign="bottom" height="42">
    <img height="38" src="<%=TopVirtualUrl%>/Admin/images/title.gif" width="158" border="0"></td>
    </tr>
    <tr>
    <td class="menu_title" onMouseOver="this.className='menu_title2';" onMouseOut="this.className='menu_title';"
    background="<%=TopVirtualUrl%>/Admin/images/title_bg_quit.gif" height="25">
    <span><b><a target="_top" href="Default.aspx"><font color="#215dc6">回到首页</font></a></b>
    | <a  href="x.aspx"><font color="#215dc6"><b>退出 </font>
    </a></B></span></td>
    </tr>
    <tr>
    <td align="center" onMouseOver="aa('up')" onMouseOut="StopScroll()">&nbsp;
    </td>
    </tr>
    </table>
    <script>
    var he=document.body.clientHeight -200
    document.write("<div id=tt style=height:"+he+";overflow:hidden>")
    </script>
    <table cellspacing="0" cellpadding="0" width="158" align="center">

    <tr>
    <td id="imgmenu3" class="menu_title" onMouseOver="this.className='menu_title2';" onClick="showsubmenu(3)"
    onMouseOut="this.className='menu_title';" background="<%=TopVirtualUrl%>/Admin/images/menudown.gif" height="25">
    <span>文章信息管理</span>
    </td>
    </tr>
    <tr>
    <td id="submenu3">
    <div class="sec_menu" style="WIDTH: 158px">
    <table cellspacing="3" cellpadding="0" width="130" align="center">
    <tr>
    <td><a  href="aa.aspx "><font color="#000000">新闻类别添加</font></a></td>
    </tr>
    <tr>
    <td><a  href="bb.aspx "><font color="#000000">文章类别添加</font></a></td>
    </tr>
    <tr>
    <td><a  href="cc.aspx"><font color="#000000">文章信息添加</font></a></td>
    </tr>
    </table>
    </div>
    <br>
    </td>
    </tr>
    <tr>
    <td id="imgmenu4" class="menu_title" onMouseOver="this.className='menu_title2';" onClick="showsubmenu(4)"
    onMouseOut="this.className='menu_title';" background="<%=TopVirtualUrl%>/Admin/images/menudown.gif" height="25">
    <span>信息管理</span>
    </td>
    </tr>
    <tr>
    <td id="submenu4">
    <div class="sec_menu" style="WIDTH: 158px">
    <table cellspacing="3" cellpadding="0" width="130" align="center">
    <TR>
    <TD><A href="a.aspx" ><FONT color="#000000">信息添加</FONT></A></TD>
    </TR>
    <TR>
    <TD><A href="b.aspx" ><FONT color="#000000">类别添加</FONT></A></TD>
    </TR>
    </table>
    </div>
    <br>
    </td>
    </tr>

    <!--统计结束**************************************-->
    </table>
    &nbsp;

    <DIV></DIV>
    <table cellspacing="0" cellpadding="0" width="158" align="center">
    <tr>
    <td align="center" onMouseOver="aa('Down')" onMouseOut="StopScroll()" valign="bottom">&nbsp;
    </td>
    </tr>
    </table>
    <script>function aa(Dir)
    {tt.doScroll(Dir);Timer=setTimeout('aa("'+Dir+'")',100)}//这里100为滚动速度
    function StopScroll(){if(Timer!=null)clearTimeout(Timer)}function initIt(){
    divColl=document.all.tags("DIV");
    for(i=0; i<divColl.length; i++) {
    whichEl=divColl(i);if(whichEl.className=="child")whichEl.style.display="none";}
    }
    function expands(el) {
    whichEl1=eval(el+"Child");
    if (whichEl1.style.display=="none"){
    initIt();
    whichEl1.style.display="block";
    }else{whichEl1.style.display="none";}
    }
    var tree= 0;
    function loadThreadFollow(){
    if (tree==0){
    document.frames["hiddenframe"].location.replace("LeftTree.asp");
    tree=1
    }
    }function showsubmenu(sid)
    {
    whichEl = eval("submenu" + sid);
    imgmenu = eval("imgmenu" + sid);
    if (whichEl.style.display == "none")
    {
    eval("submenu" + sid + ".style.display=\"\";");
    imgmenu.background="<%=TopVirtualUrl%>/Admin/images/menuup.gif";
    }
    else
    {
    eval("submenu" + sid + ".style.display=\"none\";");
    imgmenu.background="<%=TopVirtualUrl%>/Admin/images/menudown.gif";
    }
    }function loadingmenu(id){
    var loadmenu =eval("menu" + id);
    if (loadmenu.innerText=="Loading..."){
    document.frames["hiddenframe"].location.replace("LeftTree.asp?menu=menu&id="+id+"");
    }
    }
    top.document.title=""; 
    </script>
    <script>
    var _h = 0;
    function SetH(o)
    {
    _h = o.scrollTop
    SetCookie("a",_h)}
    window.onload = function(){ document.getElementById("x").scrollTop = GetCookie("a");}
    function SetCookie(sName, sValue)
    {
      document.cookie = sName + "=" + escape(sValue) + "; ";
    }
    function GetCookie(sName)
    {  var aCookie = document.cookie.split("; ");
      for (var i=0; i < aCookie.length; i++)
      {   
        var aCrumb = aCookie[i].split("=");
        if (sName == aCrumb[0]) 
          return unescape(aCrumb[1]);
      }  return 0;
    }
    </script>
    </div>
    </BODY>
    </HTML>
      

  5.   

    用帧 iframe 装你需要刷新的或不刷新的东西,或者用框架,.net的树也保存状态的
      

  6.   

    用MagicAjax可以实现
    1.应该在你的应用程序的 web.config 文件中加上
    <httpModules>
    <add name="MagicAjax" type="MagicAjax.MagicAjaxModule, MagicAjax" /> 
    </httpModules>
    2.在页面中加
    <%@ Register TagPrefix="ajax" Namespace="MagicAjax.UI.Controls" Assembly="MagicAjax" %>
    3.把不刷新的控件放在<ajax:AjaxPanel id="AjaxPanel1" runat="server">
    </ajax:AjaxPanel>中间
    例如:
    <ajax:AjaxPanel id="AjaxPanel1" runat="server">
    <asp:button id="BtnBM" runat="server" CssClass="btn_3words" Text="添加"></asp:button>
    </ajax:AjaxPanel>
      

  7.   

    menu自身是可以保持状态的。你可以做一个menu,让它动态展开一些结点、改变某些样式等,然后在旁边放一个button,你会看到button处理并不会使得menu丢失状态。因此,人家的menu本来就保持状态,不必怪人家的东西不好。你的问题完全是你“提交新闻信息”功能写错了造成的。你是怎么提交新闻信息的呢?
      

  8.   

    不是提交的问题,是点击menu菜单打开页面的时候,系统就自动刷新,把我原来伸展开的菜单又收了回去了
      

  9.   

    sorry,看错了!我还以为你是使用menu控件。你的那个太长了,我试试看能不能看完。即使一个程序员写的界面再漂亮,如果不能支持动态特性,例如状态保持(就像上边我说的用一个简单的Button来测试)、独立性(例如在页面上放置两个以上看有没有数据冲突),那么也是严重的问题,应该考虑让它做美工而不是程序员。如果等到写出了很复杂的程序才去看基本的状态保持问题的BUG,往往很难跟他说清楚。
      

  10.   

    你的代码不是一个asp.net程序员的代码,没有控件的基本功能。如果你的ascx就是这样的,没有状态,那么应该去javascript和html/css论坛上去问那个问题了。虽然asp.net程序员也可以和只会开发比较低级的代码的程序员打交道,但是确实只能隔离开那些东西。那段代码充其量只能放在 iframe 中,而不能当作控件使用。
      

  11.   

    xinganna() ( ) :谢谢执行到第3步的时候,我是这样放的
    <%@ Register TagPrefix="uc1" TagName="menu" Src="menu.ascx" %>
    <%@ Register TagPrefix="ajax" Namespace="MagicAjax.UI.Controls" Assembly="MagicAjax" %>
    <td vAlign="top" align="left" width="158" bgColor="#1851ce"><ajax:AjaxPanel id="AjaxPanel1" runat="server">
    <UC1:MENU id="menu" Runat="server"></UC1:MENU>
    </ajax:AjaxPanel>
    </td>然后系统提示:创建控件时出错
      

  12.   

    web.config配置中提示错误
    “/MYLZ”应用程序中的服务器错误。
    --------------------------------------------------------------------------------配置错误 
    说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 分析器错误信息: 找不到文件或程序集名称“MagicAjax”,或找不到它的一个依赖项。源错误: 
    行 20:     />
    行 21:     <httpModules>
    行 22: <add name="MagicAjax" type="MagicAjax.MagicAjaxModule, MagicAjax" /> 
    行 23: </httpModules>
    行 24: