markup:
<form id="form1" runat="server">
<div>
<asp:TreeView runat="server" ID="tvw">
</asp:TreeView>
</div>
</form>
code bebind:
public partial class TestPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DataTable result = GetData();
var dt = result.AsDataView();
dt.Sort = "Level";
TreeNode node = null;
int previousLevel = 0;
TreeNodeCollection coll = null;
foreach (DataRowView row in dt)
{
int level = int.Parse(row["Level"].ToString());
if (level > previousLevel)
{
previousLevel = level;
coll = node.ChildNodes;
}
node = AddNodes(coll, level, row);
}
}
private DataTable GetData()
{
var dt = new DataTable();
dt.Columns.Add("UserId");
dt.Columns.Add("Email");
dt.Columns.Add("FullName");
dt.Columns.Add("Level");
var row = dt.NewRow();
row["UserId"] = "nafees.ahmed";
row["Email"] = "nafees.ahmed@ibtechnology.com";
row["FullName"] = "NAFEES AHMED";
row["Level"] = 0;
dt.Rows.Add(row);
row = dt.NewRow();
row["UserId"] = "sameerkhanna";
row["Email"] = "sameerkhanna@ibtechnology.com";
row["FullName"] = "SAMEER KHANNA";
row["Level"] = 1;
dt.Rows.Add(row);
row = dt.NewRow();
row["UserId"] = "juned.mohd";
row["Email"] = "juned.mohd@ibtechnology.com";
row["FullName"] = "Mohd Juned sameerkhanna";
row["Level"] = 2;
dt.Rows.Add(row);
row = dt.NewRow();
row["UserId"] = "nafees.ahmed";
row["Email"] = "nafees.ahmed@ibtechnology.com";
row["FullName"] = "NAFEES AHMED";
row["Level"] = 0;
dt.Rows.Add(row);
row = dt.NewRow();
row["UserId"] = "rana.samir";
row["Email"] = "rana.samir@ibtechnology.com";
row["FullName"] = "Samir Rana sameerkhanna";
row["Level"] = 2;
dt.Rows.Add(row);
row = dt.NewRow();
row["UserId"] = "harkesh.deshwal";
row["Email"] = "harkesh.deshwal@ibtechnology.com";
row["FullName"] = "Harkesh Deshwal sameerkhanna";
row["Level"] = 2;
dt.Rows.Add(row);
row = dt.NewRow();
row["UserId"] = "satish.k5";
row["Email"] = "satish.k5@ibtechnology.com";
row["FullName"] = "Satish Kumar sameerkhanna";
row["Level"] = 2;
dt.Rows.Add(row);
return dt;
}
private TreeNode AddNodes(TreeNodeCollection nodes, int level, DataRowView r)
{
var item = new TreeNode()
{
Text = string.Concat("(", r["Level"].ToString(), ") ", r["UserId"].ToString(), r["Email"].ToString(), r["FullName"].ToString()),
Value = r["Level"].ToString()
};
if (null == nodes)
{
tvw.Nodes.Add(item);
}
else
{
nodes.Add(item);
}
return item;
}
}
What you achieve, level wise code tree view population, above code will do this. Here I use custom datatable with mock data but you need to populate it from database. After seen the output i do not find any meaning of this tree view. Please let me know is this your requirements or something different.