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

asp.net 2.0怎么实现这样的二级菜单谢谢

asp.net 2.0怎么实现这样的二级菜单谢谢 --------------------编程问答-------------------- 图片重新上传 --------------------编程问答-------------------- 怎么样的二级菜单?????看不到效果 --------------------编程问答-------------------- 很常见的呀
先创建两个dropdownlist:dropdownlist1,dropdownlist2
page_load的时候先bind  dropdownlist1。
然后在dropdownlist1的selectedIndexChanged事件中bind dropdownlist2 --------------------编程问答-------------------- 把所有的菜单保存在一张表里面...本身有个id 还有一个上级的id假设为Pid,并有层次设置0,1
取出所有层次为0的菜单放到ds1中

循环ds1,将他的值放在 时尚女包处...
得到ds1中的id ,取出表中层次1的菜单..他的pi=ds1中的id
绑定在时尚女包的下面 --------------------编程问答-------------------- 不明白啊!可以给个源码吗? --------------------编程问答-------------------- 我原来做的是用DataList嵌套 --------------------编程问答--------------------
<asp:datalist id="DataList1" runat="server">
<ItemTemplate>
<TABLE id="Table1" cellSpacing="0" cellPadding="0" border="0">
<tr><TD colspan="3" height="6"></tr>
<TR>
<td align="right" valign="middle"><img src="images/index_05.jpg" width="7" height="11" />
</td>
               <td align="center" valign="middle"><a href="/ProductList.aspx?TypeID=<%# DataBinder.Eval(Container.DataItem,"ID")%>"><%# DataBinder.Eval(Container, "DataItem.Name") %></A>
               </span></td>
              <td align="left" valign="middle"><img src="images/index_06.jpg" width="7" height="11" />
</td>
</TR>
<TR>
<TD colspan="3">
<asp:datalist id="Datalist2" runat="server" Width="100%" RepeatColumns="3" CssClass="purple12">
<ItemTemplate>
<table>
<tr>
<td height="20" align="center" valign="middle"><a href="/ProductList.aspx?TypeID=<%# DataBinder.Eval(Container.DataItem,"ID")%>"><%# DataBinder.Eval(Container, "DataItem.Name") %></a></td>
</tr>
</table>
</ItemTemplate>
</asp:datalist></TD>
</TR>
<tr><TD colspan="3" height="6"></tr>
</TABLE>
</ItemTemplate>
</asp:datalist>


private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item||e.Item.ItemType == ListItemType.AlternatingItem) 
{
DataRowView rowv = (DataRowView)e.Item.DataItem; 
int mainID = Convert.ToInt32(rowv["ID"]);
DataList DataList2 = (DataList)e.Item.FindControl("DataList2");
if(mainID>0)
{
string strSql = "select  * from gs_ClassInfo where BigID=" + mainID.ToString();
DataTable dtl = ob.ExecuteTable(strSql);
if(dtl != null && dtl.Rows.Count>0)
{
DataList2.DataSource = dtl;
DataList2.DataBind();
}
}
}

}
--------------------编程问答-------------------- 楼上的可以给个实例看一下吗? --------------------编程问答-------------------- 谢谢  fellowcheng  --------------------编程问答-------------------- 嵌套 datalist 或者 repeater --------------------编程问答-------------------- 什么意思啊。
有个现成的treeview啊 --------------------编程问答-------------------- 我靠。csdn大bug啊。我的第一次回复没有啊 --------------------编程问答-------------------- 怎么结帖谢谢 --------------------编程问答-------------------- 神呐。找到了。 --------------------编程问答-------------------- <!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>
<title>符合web标准二级下拉导航菜单</title>
<meta http-equiv="content-type" content="text/html;charset=gb2312">
<!--把下面代码加到<head>与</head>之间-->
<style type="text/css">
*{
padding:0;
margin:0;
}
body{
font-family:verdana,sans-serif;
font-size:small;
}
#navigation,#navigation li ul{
list-style-type:none;
}
#navigation{
margin:40px;
}/*可有可无属性,是内容与边的距离*/
#navigation li{
float:left;
text-align:center;
position:relative;/*position:relative一定要写,是下面的链接相对它绝对定位*/
}
#navigation li a:link,#navigation li a:visited{
display:block;
text-decoration:none;
color:#000;
width:120px;/*改变所有的导航栏的长度*/
height:30px;/*改变所有导航栏的高度*/
line-height:30px;
border:1px solid red;/*没有这个属性的所有的导航栏的颜色就连在一起了*/
background:#c5dbf2;
padding-left:10px;
}
#navigation li ul{
display:none;
position:absolut;
top:40px;
left:0;
margin-top:1px;/*可有可无,无的话主菜单和二级菜单就会没有空隙*/
width:120px;
}
#h{
position:absolute;
top:74px;
left:40px;   

</style>
<script type="text/javascript">
function displaySubMenu(li) {
var subMenu = li.getElementsByTagName("ul")[0];
subMenu.style.display = "block";
}
function hideSubMenu(li) {
var subMenu = li.getElementsByTagName("ul")[0];
subMenu.style.display = "none";
}
</script>
</head>
<body>
<!--把下面代码加到<body>与</body>之间-->
<div>
  <ul id="navigation">
    <li onmouseover="displaySubMenu(li1)" onmouseout="hideSubMenu(this)" id="li1"><a href="#">栏目1</a><!--函数里面用id和this都代表了这个节点的意思-->
      <ul>
        <li><a href="#">栏目1->菜单1</a></li>
        <li><a href="#">栏目1->菜单2</a></li>
        <li><a href="#">栏目1->菜单3</a></li>
      </ul>
    </li>
    <li onmouseover="displaySubMenu(this)" onmouseout="hideSubMenu(this)"><a href="#">栏目2</a>
      <ul>
        <li><a href="#">栏目2->菜单1</a></li>
        <li><a href="#">栏目2->菜单2</a></li>
        <li><a href="#">栏目2->菜单3</a></li>
      </ul>
    </li>
    <li onmouseover="displaySubMenu(this)" onmouseout="hideSubMenu(this)"><a href="#">栏目3</a>
      <ul>
        <li><a href="#">栏目3->菜单1</a></li>
        <li><a href="#">栏目3->菜单2</a></li>
        <li><a href="#">栏目3->菜单3</a></li>
      </ul>
    </li>
  </ul>
</div>
</body>
</html> --------------------编程问答-------------------- 用Repeater
第一行,从数据库中选出一级分类<%#Eval("name").ToString() %>
第二行,根据一级分类的id获取二级分类 <%#GetDNameByID(Eval("id").ToString())%>
后台
绑定repeater
public string GetDNameByID(string id)
{string ihtml="";
 //从数据库中筛选出相应的分类
.....
 if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DataRow dr = dt.Rows[i];
                 
                    ihtml += "...";//一条一条取出相应的记录
                }

            }
return ihtml;
}
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,