Wednesday, 26 June 2013

Treeview Data Binding and Getting Complete Child node path

public void GetNodes()
    {
        string Query = "Select * from table where IsActive='true'";
        DataSet ds =objContent.ExecuteQuery(Query);
        ViewState["Datas"] = ds;
        if (ds.Tables.Count > 0)
        {
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                TreeNode Parent = new TreeNode();
                if (ds.Tables[0].Rows[i]["Parent_Id"].ToString() == "0")
                {
                    Parent.Text = Convert.ToString(ds.Tables[0].Rows[i]["MenuName"]);
                    Parent.Value = Convert.ToString(ds.Tables[0].Rows[i]["MenuId"]);
                    GetchildNodes(Parent, Convert.ToInt32(ds.Tables[0].Rows[i]["MenuId"]));
                    TreeView1.Nodes.Add(Parent);
                }
                if (i == 0)
                {
                    CompleteNodePath(Parent);
                }
            }
            BindContent(Convert.ToInt32(ds.Tables[0].Rows[0]["MenuId"].ToString()));
        }
    }



 public void GetchildNodes(TreeNode Parent, Int32 childNode)
    {
        DataSet ds = new DataSet();
        ds = (DataSet)ViewState["Datas"];
        int NoofChilds = 0;
        if (ds.Tables.Count > 0)
        {
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                if (Convert.ToInt32(ds.Tables[0].Rows[i]["Parent_Id"]) == childNode)
                {
                    NoofChilds += 1;
                }
            }
        }
        if (NoofChilds > 0)
        {
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                if (Convert.ToInt32(ds.Tables[0].Rows[i]["Parent_Id"]) == childNode)
                {
                    TreeNode child = new TreeNode();
                    child.Text = Convert.ToString(ds.Tables[0].Rows[i]["MenuName"]);
                    child.Value = Convert.ToString(ds.Tables[0].Rows[i]["MenuId"]);
                    Parent.ChildNodes.Add(child);
                    GetchildNodes(child, Convert.ToInt16(ds.Tables[0].Rows[i]["MenuId"]));
                }
            }
        }
        ds.Dispose();
    }


protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
     
        TreeNode node = TreeView1.SelectedNode;    
        int NodeId = Convert.ToInt32(node.Value);
        BindContent(NodeId);
        CompleteNodePath(node);

    }

    public void CompleteNodePath(TreeNode node)
    {
        lbl_SelectedNode.Text = "Topic : ";
        String pathStr = node.Text;
        string separator = "\\";
        TreeView1.PathSeparator = Convert.ToChar(separator);
        if (node.Depth != 0)
        {
            while (node.Parent.Text != "")
            {
                pathStr = node.Parent.Text + this.TreeView1.PathSeparator + pathStr;
                node = node.Parent;
                if (node.Depth == 0)
                {
                    break;
                }
                else
                {

                }

            }
        }
        else
        {
            pathStr = node.Text;
        }
        if (pathStr.Contains("\\"))
        {
            string[] path = pathStr.Split('\\');
            for (int i = 0; i < path.Length; i++)
            {
                if (i != path.Length - 1)
                {
                    lbl_SelectedNode.Text += path[i].ToString() + " -->";
                }
                else
                {
                    lbl_SelectedNode.Text += path[i].ToString();

                }

            }
        }
        else
        {
            lbl_SelectedNode.Text += node.Text;

        }

    }

1 comment: