TreeVIew控件可以实现在后台管理界面,实现多级菜单的样式。数据可以自己手动添加,也可以从数据库中绑定,方法如下:
数据库中的表T_Category表的样式:
HTML代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView1" runat="server">
</asp:TreeView>
</div>
</form>
</body>
</html>
C#代码:
在页面加载时,将所有数据查询出来,经行几级的菜单加载。
最常见的方法就是递归方法,即方法本身调用自身方法。(相当于死循环,但通过条件来跳出循环。)
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = GetShopClass();
LoadShopClass(null,"0",dt);
}
}
//菜单的加载
private void LoadShopClass(TreeNode td,string id,DataTable dt)
{
DataRow[] rows= dt.Select("FatherId=" + id);
foreach (DataRow row in rows)
{
TreeNode node = new TreeNode();
node.Text = row["CategoryName"].ToString();
node.Value = row["CategoryId"].ToString();
if (td == null)
{
this.TreeView1.Nodes.Add(node);
}
else
{
td.ChildNodes.Add(node);
}
LoadShopClass(node,node.Value,dt);
}
}
//从数据库中将数据查询出来
private DataTable GetShopClass()
{
string sqlstr = ConfigurationManager.ConnectionStrings["sqlserverstr"].ConnectionString;
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(sqlstr))
{
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "select * from T_Category";
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dt);
}
}
return dt;
}