Hierarchical Tree View for displaying database table : TreeView « GUI Windows Forms « C# / CSharp Tutorial






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());
    }
  }








23.31.TreeView
23.31.1.Simple Treeview
23.31.2.Use TreeView.Nodes.AddRange to add nodes
23.31.3.TreeView selection event
23.31.4.Use TreeView to display Directories
23.31.5.TreeView: Add NodesTreeView: Add Nodes
23.31.6.Tree node foreground and background color, tooltipsTree node foreground and background color, tooltips
23.31.7.Directory TreeView
23.31.8.Hierarchical Tree View for displaying database table