TreeView控件可以通过递归方式绑定数据库数据,代码如下:
void Page_Load()
{ if (!Page.IsPostBack) PopulateTreeView(); }private void PopulateTreeView()
{ DataTable treeViewData = GetTreeViewData(); AddTopTreeViewNodes(treeViewData); //绑定父节点 }private DataTable GetTreeViewData() //获取数据
{ string selectCommand = "SELECT MessageId,ParentId,Subject FROM Discuss"; string conString = WebConfigurationManager.ConnectionStrings["Discuss"].ConnectionString; SqlDataAdapter dad = new SqlDataAdapter(selectCommand, conString); DataTable dtblDiscuss = new DataTable(); dad.Fill(dtblDiscuss); return dtblDiscuss; }private void AddTopTreeViewNodes(DataTable treeViewData)
{ DataView view = new DataView(treeViewData); view.RowFilter = "ParentID IS NULL"; foreach (DataRowView row in view) { TreeNode newNode = new TreeNode(row["Subject"].ToString(), row["MessageId"].ToString()); TreeView1.Nodes.Add(newNode); AddChildTreeViewNodes(treeViewData, newNode);//绑定子节点 }}
private void AddChildTreeViewNodes(DataTable treeViewData, TreeNode parentTreeViewNode)
{ DataView view = new DataView(treeViewData); view.RowFilter = "ParentID=" + parentTreeViewNode.Value; foreach (DataRowView row in view) { TreeNode newNode = new TreeNode(row["Subject"].ToString(), row["MessageId"].ToString()); parentTreeViewNode.ChildNodes.Add(newNode); AddChildTreeViewNodes(treeViewData, newNode);//递归,绑定子节点 } }数据表中记录通过ParentId字段指定父节点。
详细介绍可以参考:《ASP.NET2.0揭秘卷1》
树节点TreeNode的重要属性:
Text:节点显示内容
Value:节点对应值
NavigateUrl:导航页面Url
Target:目标框架
ImageUrl:节点图像