Wednesday, May 2, 2012

Dynamic Tree View in asp.net


I have created a function to bind treeview control with database in asp.net. It is upto three label. To use this code first copy it and paste it on your page and then call this method Bind_Tree() on page load event. Also create a database for this. I have created three table (tbl_MainCategory,tbl_SubCategory,tbl_Accessory ) in the database and bind three view upto three label with these three tables. 


---------------------------------------------------------

SqlConnection con = new SqlConnection();
SqlDataAdapter adp = new SqlDataAdapter();
DataSet ds = new DataSet();
string PageName = "default.aspx?{0}={1}";


void Bind_Tree()
{
con = new SqlConnection(ConfigurationManager.ConnectionStrings["cn"].ConnectionString);
if (con.State == ConnectionState.Closed)
{
con.Open(); }
Sdr.Close();
}
Module_Sdr.Close();
Module_Sdr.Close();

level3_Sdr.Close();

}

TreeView1.Nodes.Add(root);
}
TreeView1.CollapseAll();
con.Close();
}


}

TreeView1.Nodes.Add(root);
}
TreeView1.CollapseAll();
con.Close();
}

}
TreeView1.Nodes.Add(root);
}
TreeView1.CollapseAll();
con.Close();
}

TreeView1.Nodes.Add(root);
}
TreeView1.CollapseAll();
con.Close();
}

SqlCommand SqlCmd = new SqlCommand("Select * from tbl_MainCategory", con);
SqlDataReader Sdr = SqlCmd.ExecuteReader();
SqlCmd.Dispose();
string[,] ParentNode = new string[100, 2];
int count = 0;
while (Sdr.Read())
{
ParentNode[count, 0] = Sdr.GetValue(Sdr.GetOrdinal("Id")).ToString();
ParentNode[count++, 1] = Sdr.GetValue(Sdr.GetOrdinal("Category")).ToString();
}
for (int loop = 0; loop < count; loop++)
{
TreeNode root = new TreeNode();

root.Text = ParentNode[loop, 1];
root.Target = "_blank";
root.NavigateUrl = string.Format(PageName, "Main Category", ParentNode[loop, 0]);

SqlCommand Module_SqlCmd = new SqlCommand("Select * from tbl_SubCategory where MainCategory =" + ParentNode[loop, 0], con);
SqlDataReader Module_Sdr = Module_SqlCmd.ExecuteReader();

int count1=0;
string[,] childNode = new string[100, 2];
while (Module_Sdr.Read())
{
childNode[count1, 0] = Module_Sdr.GetValue(Module_Sdr.GetOrdinal("Id")).ToString();
childNode[count1++, 1] = Module_Sdr.GetValue(Module_Sdr.GetOrdinal("Category")).ToString();
for (int i = 0; i < count1; i++)
{
TreeNode child = new TreeNode();

child.Text = childNode[i, 1];
child.Target = "_blank";
child.NavigateUrl = string.Format(PageName, "Category", childNode[i, 0]);

root.ChildNodes.Add(child);
SqlCommand level3_SqlCmd = new SqlCommand("Select * from tbl_Accessory where Category =" + childNode[i, 0], con);
SqlDataReader level3_Sdr = level3_SqlCmd.ExecuteReader();
while (level3_Sdr.Read())
{
TreeNode subChild = new TreeNode();
subChild.Text = level3_Sdr.GetValue(level3_Sdr.GetOrdinal("Accessory")).ToString();

subChild.Target = "_blank";

subChild.NavigateUrl = string.Format(PageName, "SubCategory", level3_Sdr.GetValue(level3_Sdr.GetOrdinal("Id")).ToString());


child.ChildNodes.Add(subChild);

}