当前位置:编程学习 > C#/ASP.NET >>

自动生成菜单,出现这样的图标。 为什么

IE8  Win7系统
  类似  @ 这样的符号


 public string GetMenu()
    {


        StringBuilder LeftList = new StringBuilder();//声明一个LeftList 用于后面拼接
        try
        {
            LeftList.Append("<div id=\"menu\">");
            LeftList.Append("<ul>");

            DBHelper dbhmenu = new DBHelper();

            DataTable Dt_TotleMenu = dbhmenu.getDetail("select * from xtmenu");
            DataRow[] drMenu = Dt_TotleMenu.Select("Menu_Fid=0 and Menu_able=1");//取出所有启用的父节点
            DataTable LeftMenuTable = new DataTable();//构建父节点的table
            LeftMenuTable = drMenu[0].Table.Clone();
            foreach (DataRow dr in drMenu)
            {
                LeftMenuTable.ImportRow(dr);
            }

            if (LeftMenuTable.Rows.Count != 0)
            {
                LeftList.Append("<li id=\"m_1\" class='m_li_a'><a href=\"#\">首页</a></li>");
                for (int i = 0; i < LeftMenuTable.Rows.Count; i++)
                {
                    LeftList.Append("<li class=\"m_line\"></li>");//添加图片
                    //if (i != 0)
                    {
                        LeftList.Append("<li id=\"m_" + (i + 2) + "\" class='m_li' onmouseover='mover(" + (i + 2) + ");' onmouseout='mout(" + (i + 2) + ");'><a href=" + LeftMenuTable.Rows[i]["Menu_Url"].ToString().Trim() + ">" + LeftMenuTable.Rows[i]["Menu_Name"].ToString().Trim() + "</a></li>");
                    }
                }
                LeftList.Append("<li class=\"m_line\"></li>");
                LeftList.Append("</ul>");
                LeftList.Append("</div>");
            }




            //先拼接子菜单的前两行
            LeftList.Append("<div s6tyle=\"height:32px; background-color:#F1F1F1;\">");
            LeftList.Append("<ul class=\"smenu\">");
            LeftList.Append("<li  id=\"s_1\" class='s_li_a'><a href='desktop.aspx' target='main'>工作桌面</a></li>");

            for (int j = 0; j < LeftMenuTable.Rows.Count; j++)
            {
                DataRow[] drSencondMenu = Dt_TotleMenu.Select("Menu_Fid=" + LeftMenuTable.Rows[j]["Menu_ID"] + " and Menu_able=1");
                DataTable SecondTable = new DataTable();
                SecondTable = drSencondMenu[0].Table.Clone();
                foreach (DataRow dr in drSencondMenu)
                {
                    SecondTable.ImportRow(dr);
                }


                if (SecondTable.Rows.Count != 0)//证明此父节点存在子节点
                {
                    {
                        LeftList.Append("<li  id=\"s_" + (j + 2) + "\" class='s_li' onmouseover='mover(" + (j + 2) + ");' onmouseout='mout(" + (j + 2) + ");'>");
                        //遍历拼接子节点的HTML
                        for (int k = 0; k < SecondTable.Rows.Count; k++)
                        {

                            LeftList.Append("<a href=" + SecondTable.Rows[k]["Menu_Url"].ToString().Trim() + " target='main'>" + SecondTable.Rows[k]["Menu_Name"].ToString().Trim() + "</a> ");

                            if (k != SecondTable.Rows.Count - 1)//如果是最后一项就不加 | 了.^_^
                            {
                                LeftList.Append("    |    ");
                            }
                        }
                    }
                    LeftList.Append("</li>");

                }
            }
            LeftList.Append("</ul>");
            LeftList.Append("</div>");


            return LeftList.ToString();
            

        }
        catch (Exception err)
        {
            return "没菜单";
        }
    }
--------------------编程问答--------------------
引用楼主 sunnydisk 的回复:
IE8  Win7系统
  类似  @ 这样的符号

C# code

 public string GetMenu()
    {


        StringBuilder LeftList = new StringBuilder();//声明一个LeftList 用于后面拼接
        try
        {
            LeftList.Append("<……



   <style>
        
        #menu
        {
            height: 24px;
            margin-top: 0px;
            background-color: #acd6ff;
        }
        #menu ul
        {
            margin: auto;
            width: 778px;
            height: 24px;
            list-style-type: none;
            padding: 0px;
            margin-top: 0px;
            margin-bottom: 0px;
        }
        .m_li
        {
            float: left;
            width: 114px;
            line-height: 24px;
            text-align: center;
            margin-right: -2px;
            margin-left: -2px;
        }
        .m_li a
        {
            display: block;
            color: #FFFFFF;
            width: 114px;
        }
        .m_line
        {
            float: left;
            width: 0px;
            height: 24px;
            line-height: 24px; /*ff下有效(图片垂直居中)*/
        }

        .m_li_a
        {
            float: left;
            width: 114px;
            line-height: 24px;
            text-align: center;
            padding-top: 3px;
            font-weight: bold;
            position: relative;
            height: 24px;
            margin-top: -3px;
            margin-right: -2px;
            margin-left: -2px;
        }
        .m_li_a a
        {
            display: block;
            color: #d2e9ff;
            width: 114px;
        }
        .smenu
        {
            width: 694px;
            margin: 0px auto 0px auto;
            padding: 0px;
            list-style-type: none;
            height: 24px;
        }
        .s_li
        {
            line-height: 24px;
            width: auto;
            display: none;
            height: 24px;
        }
        .s_li_a
        {
            line-height: 24px;
            width: auto;
            display: block;
            height: 24px;
        }
    </style>
--------------------编程问答--------------------
就是这个样子 --------------------编程问答-------------------- 跟踪进去看一下,

看 SecondTable.Rows[k]["Menu_Name"].ToString().Trim() 是不是含有@符号 --------------------编程问答-------------------- 也有可能是
SecondTable.Rows[k]["Menu_Url"].ToString().Trim() 这里的内容含有@符号 --------------------编程问答-------------------- 恩,跟踪下数据库取出来的内容,把有类似空格的地方print UNICODE(' ')看看,空格的Unicode编码是32,不是32就说明不是空格是其它的。 --------------------编程问答-------------------- 如果是ie9的话用开发人员工具,直接看,两个地方有什么不同

如果有firefox用firebug看看

不必先看c#代码,没必要,这个是客户端的事情 --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,