Showing posts with label Tree node event. Show all posts
Showing posts with label Tree node event. Show all posts

Saturday, January 8, 2011

Tree node event for fetching the selected node

Back after one year of CHANGE !!!

A few days ago one of my friend had a question about tree node, he wanted to copy the text of selected node else the app should not copy. So I did some R&D on events available with tree node. Its the OnSelectedNodeChanged..


Here is sample code for the same :)
 *********ASPX Code****************


   
   


   

   

       
   

       
            OnTreeNodeExpanded="TreeView1_TreeNodeExpanded"
            onselectednodechanged="TreeView1_SelectedNodeChanged">
       

   

   



***************************************

*****Code behind***********


protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Bind_tree();
        }
    }
    public void Bind_tree()
    {
        DataTable dt = Get_District();
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            TreeNode no = new TreeNode();
            no.Text = dt.Rows[i]["District"].ToString();
            no.Value = dt.Rows[i]["District"].ToString();
            Get_allNodes(no);
            this.TreeView1.Nodes.Add(no);
        }
    }
    public void Get_allNodes(TreeNode no)
    {
        DataTable dt = Get_Arealist();
        DataRow[] rows = dt.Select("District='" + no.Value + "'");
        for (int i = 0; i < rows.Length; i++)
        {
            TreeNode child = new TreeNode();
            child.Text = rows[i]["Area"].ToString();
            child.Value = rows[i]["Area"].ToString();
            no.ChildNodes.Add(child);
            Get_allNodes(child);
        }
    }


    // You can get the data from your own database.
    // I get the datatable like this in order to run the sample more conveniently.
    public DataTable Get_District()
    {
        DataTable dt = new DataTable();
        DataRow dr;
        string Name = "District_1,District_2,District_3";
        string ID = "1,2,3";
        string[] list1 = Name.Split(',');
        string[] list2 = ID.Split(',');
        dt.Columns.Add(new DataColumn("District"));
        dt.Columns.Add(new DataColumn("ID"));
        for (int i = 0; i < list1.Length; i++)
        {
            dr = dt.NewRow();
            dr["District"] = list1[i];
            dr["ID"] = list2[i];
            dt.Rows.Add(dr);
        }
        return dt;
    }

    // You can get the data from your own database.
    // I get the datatable like this in order to run the sample more conveniently.
    public DataTable Get_Arealist()
    {
        DataTable dt = new DataTable();
        DataRow dr;
        string Name = "Area_1,Area_2,Area_3,Area_4,Area_5";
        string Dis = "District_1,District_1,District_1,District_3,Area_1";
        string ID = "1,2,3,4,5";
        string[] list1 = Name.Split(',');
        string[] list2 = Dis.Split(',');
        string[] list3 = ID.Split(',');
        dt.Columns.Add(new DataColumn("Area"));
        dt.Columns.Add(new DataColumn("District"));
        dt.Columns.Add(new DataColumn("ID"));
        for (int i = 0; i < list1.Length; i++)
        {
            dr = dt.NewRow();
            dr["Area"] = list1[i];
            dr["District"] = list2[i];
            dr["ID"] = list3[i];
            dt.Rows.Add(dr);
        }
        return dt;
    }
    protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
    {
        TreeNodeCollection ts = null;
        if (e.Node.Parent == null)
        {
            ts = ((TreeView)sender).Nodes;
        }
        else
            ts = e.Node.Parent.ChildNodes;
        foreach (TreeNode node in ts)
        {
            if (node == e.Node)
            {
                node.Expand();
            }
            else
            {
                node.Collapse();
            }
        }

    }
    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        TreeNodeEventArgs xm = new TreeNodeEventArgs(this.TreeView1.SelectedNode);
        TreeView1_TreeNodeExpanded(sender, xm);
        string value = this.TreeView1.SelectedNode.Text;
        this.Label1.Text = value;
        Page.ClientScript.RegisterStartupScript(this.GetType(), "Ming", "Getvalue('" + value + "')", true);
    }



Happy Coding :)