TreeView in ASP.NET

In this blog we will know how to create treeview nodes and corresponding sub treeview nodes from the database.

 

Scenario: -

 

I have two tables in Sql Server Database:

Table1: Category - Columns are Category_ID, CategoryName

Table2: SubCategory –Columns are SubCategory_ID, SubCategoryName, Category_ID

 

 

Category Table Data:

 

1   Item1

2   Item2

3   Item3

4   Item4

 

SubCategory Table Data

 

1  SubItem1   1

2  SubItem2   1

3  SubItem3   1

4  SubItem4   2

5  SubItem5   2

6  SubItem6   3

7  Subitem7   3

8  Subitem8   4

 

Output

 

 

Code

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TreeView_in_ASP.NET._Default" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>Untitled Page</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

    <asp:treeview ID="Treeview1" runat="server"></asp:treeview>

    </div>

    </form>

</body>

</html>

 

 

 

using System;

using System.Collections;

using System.Configuration;

using System.Data;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

using System.Data.SqlClient;

namespace TreeView_in_ASP.NET

{

    public partial class _Default : System.Web.UI.Page

    {

        string strConnString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

        string str;

        SqlCommand com, com1;

 

        protected void Page_Load(object sender, EventArgs e)

        {

            bindtreeview();

        }

        void bindtreeview()

        {

            SqlConnection con = new SqlConnection(strConnString);

            con.Open();

            str = "Select * from Category";

            com = new SqlCommand(str, con);

            SqlDataReader reader = com.ExecuteReader();

            com.Dispose();

            string[,] ParentNode = new string[100, 2];

            int count = 0;

            while (reader.Read())

            {

                ParentNode[count, 0] = reader.GetValue(reader.GetOrdinal("Category_ID")).ToString();

                ParentNode[count++, 1] = reader.GetValue(reader.GetOrdinal("CategoryName")).ToString();

            }

            reader.Close();

            for (int loop = 0; loop < count; loop++)

            {

                TreeNode root = new TreeNode();

                root.Text = ParentNode[loop, 1];

                com1 = new SqlCommand("Select * from SubCategory  where Category_ID =" + ParentNode[loop, 0], con);

                SqlDataReader reader1 = com1.ExecuteReader();

                while (reader1.Read())

                {

                    TreeNode child = new TreeNode();

                    child.Text = reader1.GetValue(reader1.GetOrdinal("SubCategoryName")).ToString();

                    root.ChildNodes.Add(child);

                }

                reader1.Close();

                Treeview1.Nodes.Add(root);

            }

            Treeview1.CollapseAll();

            con.Close();

        }

    }

}

 

 

 

Thanks for reading

Next Recommended Reading Binding TreeView Dynamically in ASp.NET