/*后台代码*/ using System; using System.Data; using System.Data.SqlClient; using System.Web.UI; using System.Web.UI.WebControls; namespace TreeViewTest { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { CreateTreeView(); } } /// <summary> /// 创建TreeView /// 此方法采取一次性加载目标数据到DataTable,递归查询DataTable,创建子节点 /// </summary> private void CreateTreeView() { const int VirtualNodeId = 0;//虚拟根节点 const string SqlStr = "select * from TreeDemo order by NodeID asc"; string connStr = @"Data Source=ANLANTAN\SQLEXPRESS;Initial Catalog=vote;Integrated Security=True"; SqlDataAdapter da = new SqlDataAdapter(SqlStr, connStr); DataTable dt = new DataTable(); da.Fill(dt); CreateTreeViewRecursive(TreeMenu.Nodes, dt, VirtualNodeId); } private void CreateTreeViewRecursive(TreeNodeCollection nodes, DataTable dataSourse, int parentId) { string filter = string.Format("ParentId={0}", parentId); //查询子节点 DataRow[] drArr = dataSourse.Select(filter); TreeNode node; foreach (DataRow dr in drArr) { node = new TreeNode(); nodes.Add(node); node.Text = (string)dr["NodeName"]; //node.Collapse(); //node.Expand(); //node.ExpandAll(); //node.ShowCheckBox = true; node.ToolTip = node.Text; //递归创建子节点 CreateTreeViewRecursive(node.ChildNodes, dataSourse, (int)dr["NodeID"]); } } } }
<%-- 前台代码--%> <body> <form id="form1" runat="server"> <div> <asp:TreeView runat="server" ImageSet="Contacts" NodeIndent="10" ID="TreeMenu"> <ParentNodeStyle Font-Bold="True" ForeColor="#5555DD" /> <HoverNodeStyle Font-Underline="False" /> <SelectedNodeStyle Font-Underline="True" HorizontalPadding="0px" VerticalPadding="0px" /> <NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" HorizontalPadding="5px" NodeSpacing="0px" VerticalPadding="0px" /> </asp:TreeView> </div> </form> </body>