-->

Wednesday, March 9, 2016

Bind TreeView with Country state and city | multiple table in ASP.NET C#

Bind TreeView with Country state and city | multiple table in ASP.NET C#

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:
Bind TreeView with Country state and city | multiple table in ASP.NET C#


Read other related articles

Also read other articles

© Copyright 2013 Computer Programming | All Right Reserved