/*后台代码*/
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>