首页 新闻 会员 周边

如何隐藏页面里面的左边菜单栏?在线等。。。

0
悬赏园豆:15 [已解决问题] 解决于 2012-11-21 11:46

 

如图,因为有一个页面里面的内容太多了,只有把左边菜单栏隐藏起来才可以显示完整。我就是想让某一个页面加载的时候就自动隐藏掉这个左边的菜单栏。请高手赐教。。。

无 影的主页 无 影 | 初学一级 | 园豆:59
提问于:2012-11-17 14:31
< >
分享
最佳答案
0

你这网页框架是什么?iframe,还是一般的Web form 母板页?

简单的话,可以用jQuery控制菜单的显隐性,隐藏掉菜单以后,还要 resize剩余的内容。

还有一种办法:把这个菜单做成一个浮动层,当菜单隐藏掉,不用考虑剩余内容的自适应问题。。

收获园豆:15
jone_e | 小虾三级 |园豆:1410 | 2012-11-17 14:42

你好,这个我以前和同事一起搞的一段代码,你看看:

</head>
<body>
    <form id="form1" runat="server">
    <div id="divOpaque">
    </div>
    <div class="headtop">
        <uc2:Top ID="Top2" runat="server" />
    </div>
    <div id="contentArea">
        <div id="ra" class="resizableArea">
            <div id="raLeft" class="leftSection">
                <uc1:LeftMenu ID="LeftMenu2" runat="server" />
            </div>
            <div id="raSplitter" class="splitter" ondblclick="ra_OpenCollapse('raSplitter','raLeft');"
                onmouseout="HighlightSplitterBar(this.id,1);" onmouseover="HighlightSplitterBar(this.id,0);"
                onmouseup="ra_resizeStop()" onmousedown="ra_resizeStart(event,this,'raLeft')"
                title="Click and drag to resize.">
            </div>
            <div id="raRight" class="rightSection">
                <div>
                    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                    </asp:ContentPlaceHolder>
                </div>
            </div>
        </div>
    </div>
    </form>
</body>


是不是应该从"ra_OpenCollapse('raSplitter','raLeft');"这里入手呢?

无 影 | 园豆:59 (初学一级) | 2012-11-17 14:47

@无 影: 你这个不是一个母板页吗?有没有用ajax,如果没有用的话,你点击菜单里的某一个连接时,整个页面都会刷新的。那么你在页面加载完毕的时候,将这个菜单隐藏掉。

如果你用ajax的话,你就在点击这个页面后,先隐藏菜单,在打开连接的页面。。

欢迎讨论。。

jone_e | 园豆:1410 (小虾三级) | 2012-11-17 15:16

@jone_e: 

 

 

对,这个就是母版页。

无 影 | 园豆:59 (初学一级) | 2012-11-17 15:33

隐藏这个菜单栏的代码是放在母版页里面还是在我打开的那个页面?

无 影 | 园豆:59 (初学一级) | 2012-11-17 15:36

@jone_e: 

 

 function CloseMenu() { 
            var objDiv = document.getElementById("raLeft");
            objDiv.style.display = "none";

         }
if (!IsPostBack)
        {
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "script", "CloseMenu()", false);

        }

这样也不行,居然找不到那个DIV。

无 影 | 园豆:59 (初学一级) | 2012-11-17 15:53

@无 影: 你这样是不行的。如果要用getElementById()函数,则必须让所有的document元素加载完毕以后才可以。

不知道你有没有用过jQuery。jQuery的代码如下:

$(function(){

 $("#raLeft").css("display","none");

})

把上面的代码放在head标签里,同时添加对jQuery文件的引用。如果你没有jQuery框架,在网上下载一个。很多的。。

jone_e | 园豆:1410 (小虾三级) | 2012-11-17 23:16

@jone_e: 

你好,我按照你的方法试了一下,但是出现这个错误,我把这段脚本分别放在母版页里面和我新建的那个页面里面,都是这个错误,麻烦帮忙看看,感谢。

无 影 | 园豆:59 (初学一级) | 2012-11-19 09:27

@无 影: 你确认你已经加过jQuery的引用了吗?

1 <head runat="server">
2     <link href="../CSS/dd.css" rel="Stylesheet" />
3     <link href="../js/Theme_Cupertino/cssUI.css" rel="Stylesheet" />
4 
5     <script type="text/javascript" src="../js/jquery/jquery-1.8.1.min.js"></script>
6 
7     <asp:ContentPlaceHolder ID="head" runat="server">
8     </asp:ContentPlaceHolder>
9 </head>

就行第5行显示的那样? 而且要把对jQuery的引用放在我上次给你的函数的上面。

jone_e | 园豆:1410 (小虾三级) | 2012-11-19 11:53

@jone_e: 

你好,我的项目里面有JQuery的js文件,母版页里面的完整代码如下,麻烦你看看那:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Main.master.cs" Inherits="Main" %>

<%@ Register Src="UserControls/LeftMenu.ascx" TagName="LeftMenu" TagPrefix="uc1" %>
<%@ Register Src="UserControls/Top.ascx" TagName="Top" TagPrefix="uc2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <link rel="Stylesheet" type="text/css" href="css/common.css" />
    <script src="Scripts/jquery.js" type="text/javascript"></script>
    <script src="Scripts/layout.js" type="text/javascript"></script>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>

    <script language="javascript" type="text/javascript">
        $(function() {

            $("#raLeft").css("display", "none");
        })
    
    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div id="divOpaque">
    </div>
    <div class="headtop">
        <uc2:Top ID="Top2" runat="server" />
    </div>
    <div id="contentArea">
        <div id="ra" class="resizableArea">
            <div id="raLeft" class="leftSection" >
                <uc1:LeftMenu ID="LeftMenu2" runat="server" />
            </div>
            <div id="raSplitter" class="splitter" ondblclick="ra_OpenCollapse('raSplitter','raLeft');"
                onmouseout="HighlightSplitterBar(this.id,1);" onmouseover="HighlightSplitterBar(this.id,0);"
                onmouseup="ra_resizeStop()" onmousedown="ra_resizeStart(event,this,'raLeft')"
                title="Click and drag to resize.">
            </div>
            <div id="raRight" class="rightSection">
                <div>
                    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                    </asp:ContentPlaceHolder>
                </div>
            </div>
        </div>
    </div>
    </form>
</body>
</html>


JQuery的代码我截了一部分图,如下:

无 影 | 园豆:59 (初学一级) | 2012-11-19 13:16

@无 影: 到这里下载一个高版本的jQuery插件吧,包括中文版帮助文档!

如果还出现错误,那你就alert($("#raLeft")),看弹出的是什么。当你不清楚jQuery执行的结果是不是你想要的的时候,你就alert(""),抛出jQuery执行的结果。

jone_e | 园豆:1410 (小虾三级) | 2012-11-19 15:00

@jone_e: 

 

好的,非常感谢你的耐心指导,我下载一个最新的版本试试看,如果有问题我再请教你,再次感谢!!

无 影 | 园豆:59 (初学一级) | 2012-11-19 16:58

@jone_e: 

 

你好,你给我的那个链接好像下载不了,我在网上找了一个新的JQuery,引用之后还是出现同一个错误,

<script src="Scripts/jquery-1.8b1.js" type="text/javascript"></script>

我把那段脚本放在母版页里面和我新建的页面都不行。

<head id="Head1" runat="server">
    <link rel="Stylesheet" type="text/css" href="css/common.css" />
    <%--<script src="Scripts/jquery.js" type="text/javascript"></script>--%>
    
    
    <script src="Scripts/jquery-1.8b1.js" type="text/javascript"></script>
    
    <script src="Scripts/layout.js" type="text/javascript"></script>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>

    <script language="javascript" type="text/javascript">
        $(function() {

            $("#raLeft").css("display", "none");
         })
    
    </script>

</head>
无 影 | 园豆:59 (初学一级) | 2012-11-20 11:50

@无 影: 你可以看看这个连接:http://forums.asp.net/t/1485083.aspx/1?Microsoft+JScript+runtime+error+Object+expected

首先可以确定的是:this error occur when you refer an object by document.getElementById when the object doesn't exist.

看这个帖子的最后一条评论,或许对你有帮助。如果还有问题,继续讨论。

jone_e | 园豆:1410 (小虾三级) | 2012-11-20 12:49

@无 影: 如果你不介意的话,把代码发过来,我看能不能找到问题。

jone_e | 园豆:1410 (小虾三级) | 2012-11-20 12:58

@无 影: 我看了你的代码,你的代码里有UpdatePanel,jQuery绑定的事件在UpdatePanel里在页面第一次加载的时候有效,当UpdatePanel里的web Controller 与服务器进行数据交换(从服务器回去内容更新)以后,jQuery绑定的事件就被UpdatePanel刷新掉了。

另外就你说的mircrosoft runtime Error这个问题,你发给我的文件是不能调试的,我帮不了你。你还是看看我发给你的那个连接。不过我可以帮你做一个页面加载完毕以后,自动隐藏菜单的效果。我一会儿给你发上来。

jone_e | 园豆:1410 (小虾三级) | 2012-11-21 09:22

@jone_e: 

好的,你太热心了,真的很感谢!!麻烦你晚一点将你做的例子给我一个链接!!

无 影 | 园豆:59 (初学一级) | 2012-11-21 10:43

@无 影: 我的文件连接地址:http://files.cnblogs.com/zeq-jone/PageLoadDivHide.rar。如果还是不能下载,联系我。

jone_e | 园豆:1410 (小虾三级) | 2012-11-21 11:11

@jone_e: 

 

Jone_e,谢谢了,文件可以下载,我正在参考你的程序,先把帖子结了!!

无 影 | 园豆:59 (初学一级) | 2012-11-21 11:46

@jone_e: 

 

Jone_e,问题已经解决了,原因就是我那个JQuery的问题,我换成你给我的那个JQuery就可以了,我用你给我的那个JQuery文件替换掉我自己的那个文件,就是不知道对其它的功能有没有什么影响。谢谢你的帮助。

无 影 | 园豆:59 (初学一级) | 2012-11-21 16:46

@无 影: 呵呵呵,总算解决了。。

jone_e | 园豆:1410 (小虾三级) | 2012-11-21 17:40
其他回答(2)
0

控制其left属性就可了

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-17 18:53
0

找到双击时触发的方法,把它写到body的onload里去

I,Robot | 园豆:9783 (大侠五级) | 2012-11-18 09:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册