using System.Data;
using System.Data.SqlClient;
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
public class HierarchicalTreeView : System.Windows.Forms.Form
{
private System.Windows.Forms.TreeView tree;
public HierarchicalTreeView()
{
this.tree = new System.Windows.Forms.TreeView();
this.SuspendLayout();
//
this.tree.ImageIndex = -1;
this.tree.Location = new System.Drawing.Point(8, 8);
this.tree.Name = "tree";
this.tree.SelectedImageIndex = -1;
this.tree.Size = new System.Drawing.Size(276, 248);
this.tree.TabIndex = 0;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.AddRange(new System.Windows.Forms.Control[] {this.tree});
this.Text = "Hierarchical TreeView";
this.Load += new System.EventHandler(this.HierarchicalTreeView_Load);
this.ResumeLayout(false);
}
string connectionString = "Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI";
string categorySQL = "SELECT * FROM Categories";
string productSQL = "SELECT * FROM Products";
private void HierarchicalTreeView_Load(object sender, System.EventArgs e)
{
SqlConnection con = new SqlConnection(connectionString);
SqlCommand com = new SqlCommand(categorySQL, con);
SqlDataAdapter adapter = new SqlDataAdapter(com);
DataSet ds = new DataSet();
con.Open();
adapter.Fill(ds, "Categories");
adapter.SelectCommand.CommandText = productSQL;
adapter.Fill(ds, "Products");
con.Close();
DataColumn parentCol = ds.Tables["Categories"].Columns["CategoryID"];
DataColumn childCol = ds.Tables["Products"].Columns["CategoryID"];
DataRelation relation = new DataRelation("Cat_Prod", parentCol, childCol);
ds.Relations.Add(relation);
foreach (DataRow parent in ds.Tables["Categories"].Rows)
{
TreeNode nodeParent = tree.Nodes.Add(parent["CategoryName"].ToString());
foreach (DataRow child in parent.GetChildRows(relation))
{
nodeParent.Nodes.Add(child["ProductName"].ToString());
}
}
}
public static void Main()
{
Application.Run(new HierarchicalTreeView());
}
}
|