一般用treeview循环遍历数据啦, 下面是主要的页面后台代码: using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using Model;using System.Data.SqlClient;using System.Collections.Generic;public partial class treeview : System.Web.UI.Page...{ protected void Page_Load(object sender, EventArgs e) ...{ List<TreeMenu> treeMenus = (List<TreeMenu>)GetTreeMenu(); this.ViewState["treemenusource"] = treeMenus; AddTree(0, (TreeNode)null); } //递归添加节点 private void AddTree(int pid, TreeNode pNode) ...{ List<TreeMenu> treeMenus = (List<TreeMenu>)ViewState["treemenusource"]; List<TreeMenu> subTreeMenu = treeMenus.FindAll(delegate(TreeMenu treemenu) ...{ if (treemenu.Pid == pid) return true; return false; }); foreach (TreeMenu treemenu in subTreeMenu) ...{ TreeNode Node = new TreeNode(); Node.Text = treemenu.Name; Node.Expanded = true; Node.NavigateUrl = treemenu.Url; Node.Target = "_blank"; if (pNode == null) ...{ this.tv.Nodes.Add(Node); } else ...{ pNode.ChildNodes.Add(Node); } AddTree(treemenu.Id, Node); } } //获取菜单数据 public IList<TreeMenu> GetTreeMenu() ...{ IList<TreeMenu> treeMenus = new List<TreeMenu>(); TreeMenu treeMenu; SqlConnection conn = new SqlConnection(@"Data Source=ORMER-05DAA50B7SQLEXPRESS;Initial Catalog=count;Integrated Security=True"); SqlCommand comm = new SqlCommand("SELECT [m_id],[m_name],[m_url] ,[m_pid],[m_order],[m_showname] FROM [treemenu] order by m_order",conn); conn.Open(); SqlDataReader rdr = comm.ExecuteReader(); while (rdr.Read()) ...{ treeMenu = new TreeMenu(rdr.GetInt32(0), rdr.GetString(1), rdr.GetString(2), rdr.GetInt32(3), rdr.GetInt32(4), rdr.GetString(5)); treeMenus.Add(treeMenu); } rdr.Close(); conn.Close(); return treeMenus; }} 前台的代码就是asp:Treeview <%@ Page Language="C#" AutoEventWireup="true" CodeFile="treeview.aspx.cs" Inherits="treeview" %><!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 runat="server"> <title>无标题页</title></head><body> <form id="form1" runat="server"> <div> <asp:TreeView ID="tv" runat="server" /> </div> </form></body></html> TreeMenu.cs类, using System;using System.Collections.Generic;using System.Text;namespace Model...{ /**//// <summary> /// 可序列化(用于viewstate)的菜单, /// </summary> [Serializable] public class TreeMenu ...{ private int _id; private string _name; private string _url; private int _pid; private int _order; private string _showname; public int Id ...{ get ...{ return _id; } set ...{ _id = value; } } public string Name ...{ get ...{ return _name; } set ...{ _name = value; } } public string Url ...{ get ...{ return _url; } set ...{ _url = value; } } public int Pid ...{ get ...{ return _pid; } set ...{ _pid = value; } } public int Order ...{ get ...{ return _order; } set ...{ _order = value; } } public string Showname ...{ get ...{ return _showname; } set ...{ _showname = value; } } public TreeMenu(int id, string name, string url, int pid, int order, string showname) ...{ _id = id; _name = name; _url = url; _pid = pid; _order = order; _showname = showname; } }} treemenu.sql,表结构 CREATE TABLE [dbo].[treemenu]( [m_id] [int] IDENTITY(1,1) NOT NULL, [m_name] [varchar](20) NULL, [m_url] [varchar](120) NULL, [m_pid] [int] NULL, [m_order] [int] NULL, [m_showname] [varchar](50) NULL)