Used to create 3 level TreeView.

protected void PopNav() {

tvNav.Nodes.Clear();

DAL dLayer = new DAL();

DataSet ds = dLayer.GetNavCategory();

ds.Relations.Add("CatToProd", ds.Tables["Cat"].Columns["Category"], ds.Tables["Prod"].Columns["Category"]);

ds.Relations.Add("ProdToFile", ds.Tables["Prod"].Columns["productid"], ds.Tables["FileTypes"].Columns["productid"]);

TreeNode nodeCat;

TreeNode nodeProd;

TreeNode nodeFile;

foreach (DataRow rowCat in ds.Tables["Cat"].Rows)

{

nodeCat = new TreeNode();

nodeCat.Expanded = false;

nodeCat.SelectAction = TreeNodeSelectAction.Expand;

 

nodeCat.Text = rowCat["Category"].ToString();

tvNav.Nodes.Add(nodeCat);

foreach (DataRow rowProd in rowCat.GetChildRows("CatToProd"))

{

nodeProd = new TreeNode();

nodeProd.Expanded = false;

nodeProd.Text = rowProd["ShortDescription"].ToString();

nodeProd.Value = rowProd["productid"].ToString();

nodeCat.ChildNodes.Add(nodeProd);

foreach (DataRow rowFileType in rowProd.GetChildRows("ProdToFile"))

{

nodeFile = new TreeNode();

nodeFile.Text = rowFileType["FileType"].ToString();

nodeFile.Value = rowFileType["productid"].ToString();

nodeProd.ChildNodes.Add(nodeFile);

}

}

}

}

///////////////DAL method

public DataSet GetNavCategory()

{

DataSet ds = new DataSet();

SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["RenewLifeConnStr"].ConnectionString);

string sql = @"dbo.GetAllCategories";

string sqlProd = @"dbo.GetAllCategoryDescriptions";

string sqlFileType = @"dbo.GetAllFileTypesByProduct";

SqlDataAdapter daCat = new SqlDataAdapter(sql, cn);

SqlDataAdapter daProd = new SqlDataAdapter(sqlProd, cn);

SqlDataAdapter daFileType = new SqlDataAdapter(sqlFileType, cn);

daCat.SelectCommand.CommandType = CommandType.StoredProcedure;

daCat.SelectCommand.CommandTimeout = 20000;

daProd.SelectCommand.CommandType = CommandType.StoredProcedure;

daProd.SelectCommand.CommandTimeout = 20000;

daFileType.SelectCommand.CommandType = CommandType.StoredProcedure;

daFileType.SelectCommand.CommandTimeout = 20000;

using (cn)

{

cn.Open();

daCat.Fill(ds, "Cat");

daProd.Fill(ds, "Prod");

daFileType.Fill(ds, "FileTypes");

}

return ds;

}