In this article i will show you how to bind TreeView at 2 level, you can say that Bind tree view with country , state and city table. Country table data bind at 0 level , state data bind at 1 level and last city data bind at 2 level. So first of all create three table, Sql Script mentioned below:
Database Table : (Country)
CREATE TABLE [dbo].[Country] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
Database Table : (State)
CREATE TABLE [dbo].[state] (
[Id] INT NOT NULL,
[Name] NVARCHAR (50) NULL,
[cid] INT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
Database Table : (City)
CREATE TABLE [dbo].[city] (
[Id] INT NOT NULL,
[Name] NVARCHAR (50) NULL,
[sid] INT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
Now, add the tree view in web form. Now, your source page looking like this.
Source Code :
<asp:TreeView ID="TreeView1" runat="server">
</asp:TreeView>
Code Behind Code :
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default6 : System.Web.UI.Page
{
static int count = 0;
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
DataTable dt = this.GetData("SELECT Id, Name FROM [Country]");
this.PopulateTreeView(dt, count, null);
}
}
private void PopulateTreeView(DataTable dtParent, int parentId, TreeNode treeNode)
{
foreach (DataRow row in dtParent.Rows)
{
TreeNode child = new TreeNode
{
Text = row["Name"].ToString(),
Value = row["Id"].ToString()
};
if (parentId == 0)
{
TreeView1.Nodes.Add(child);
DataTable dtChild = this.GetData("SELECT Id, Name FROM [state] WHERE cid = " + child.Value);
count =1;
PopulateTreeView(dtChild,count , child);
}
else if (parentId == 1)
{
treeNode.ChildNodes.Add(child);
DataTable dtChild = this.GetData("SELECT Id, Name FROM [city] WHERE sid = " + child.Value);
count =2;
PopulateTreeView(dtChild,count, child);
}
else
{
treeNode.ChildNodes.Add(child);
}
}
}
private DataTable GetData(string query)
{
DataTable dt = new DataTable();
string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
sda.SelectCommand = cmd;
sda.Fill(dt);
}
}
return dt;
}
}
}
In this code First to bind DataTable with the Country table, for each country , retrieved State name and for each state name , retrieved city name. Here, we have recursion technique. In the Populate TreeView method parent id define the level of the tree view.
Now, Code Generates the following output: