自动生成菜单,出现这样的图标。 为什么
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 "没菜单";
}
}
--------------------编程问答--------------------
<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