Asp.net menu控件的用法

本文展示了如何使用Menu控件来实现与TreeView类似的展示方式,通过数据库查询获取数据并构建菜单结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实Menu的用法和TreeView的用法十分相像。先看代码吧!

在代码页上添加如下代码:

//获取数据

public DataSet GetData()

{

//创建SQL连接

SqlConnection myConnection=new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

SqlDataAdapter myDataAdapter = new SqlDataAdapter("SELECT [Name], [ID], [FatherID] FROM [Board] ORDER BY [FatherID], [ID]", myConnection); //这里红色的SELECT语句根据自己的需要改变吧

DataSet myDataSet = new DataSet();

try

{

myConnection.Open();

myDataAdapter.Fill(myDataSet);

}

finally {

myConnection.Close();

}

//返回一个DataSet,以便后面绑定数据使用

return myDataSet;

}

//创建Menu的根节点

public void BindMenuItem(Menu menu)

{

//这里的GetData()返回刚才的DataSet

DataTable myDataTable = GetData().Tables[0];

//红色部分根据自己的需要填写吧.我这里将数据库内FatherID为-1的记录作文Menu的根节点.

DataRow[] rowList = myDataTable.Select("FatherID='-1'");

if (rowList.Length <= 0) return;

//新建一个MenuItem,也就相当于TreeView的Node

MenuItem menuItem = new MenuItem();

menuItem.Text = rowList[0]["Name"].ToString();

menuItem.Value = rowList[0]["ID"].ToString();

menu.Items.Add(menuItem);

CreateChildNode(menuItem, myDataTable);

}



//使用递归创建子节点

private void CreateChildNode(MenuItem fMenuItem, DataTable dataTable)

{

//红色部分还是自己填写吧,意思是在所有的节点中,选择父节点ID为某个值的节点

DataRow[] rowList=dataTable.Select("FatherID='"+fMenuItem.Value+"'");

foreach (DataRow row in rowList){

MenuItem menuItem=new MenuItem();

menuItem.Text=row["Name"].ToString();

menuItem.Value=row["ID"].ToString();

fMenuItem.ChildItems.Add(menuItem);风之境地


//递归,将刚才生成的menuItem作为根节点,继续插入它的子节点

CreateChildNode(menuItem,dataTable);

}

}

 最后在Page_Load里面加入BindMenuItem()就行了

menu ul li a, .menu ul li a:visited {display:block; text-decoration:none; color:#000;width:150px; height:30px; text-align:center; color:#fff; border-bottom:1px solid #FFF; background:#0069A3; line-height:30px; font-size:14px; overflow:hidden;} .menu ul {padding:0; margin:0;list-style-type: none; } .menu ul li {float:left; margin-right:1px; position:relative;} .menu ul li ul {display: none;} /* specific to non IE browsers */ .menu ul li:hover a {color:#fff; background:#028DE8;}/*一级菜单事件*/ .menu ul li:hover ul {display:block; position:absolute; top:0; left:151px; width:100px;} .menu ul li:hover ul li a.hide {background:#6a3; color:#fff;}/*三级菜单常规*/ .menu ul li:hover ul li:hover a.hide {background:#028DE8; color:#000;}/*三级菜单事件*/ .menu ul li:hover ul li ul {display: none;} .menu ul li:hover ul li a {display:block; background:#028DE8; color:#000;}/*二,三级菜单常规*/ .menu ul li:hover ul li a:hover {background:#6fc; color:#000;}/*二,三级菜单事件*/ .menu ul li:hover ul li:hover ul {display:block; position:absolute; left:151px; top:0; width:100px;} </style> </head> <body> <form id="form1" runat="server"> <div class="menu"> <ul> <li><a class="hide" href="#">城乡规划</a> <ul> <li><a href="#" title="二级菜单1">二级菜单一</a></li> <li><a href="#" title="二级菜单2">二级菜单二</a></li> <li><a href="#" title="二级菜单3">二级菜单三</a></li> <li><a class="hide" href="#" title="这是三级菜单">三级菜单</a> <ul> .................
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值