Click here to Skip to main content
15,888,454 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
See more: , +
Hi Team,


I want to bind treeview control. I have related this table data.

SAMAccountName Email Display Name Reporting To Level

nafees.ahmed nafees.ahmed@ibtechnology.com NAFEES AHMED 0
sameerkhanna sameerkhanna@ibtechnology.com SAMEER KHANNA nafees.ahmed 1
juned.mohd juned.mohd@ibtechnology.com Mohd Juned sameerkhanna 2
rana.samir rana.samir@ibtechnology.com Samir Rana sameerkhanna 2
harkesh.deshwal harkesh.deshwal@ibtechnology.com Harkesh Deshwal sameerkhanna 2
satish.k5 satish.k5@ibtechnology.com Satish Kumar sameerkhanna 2


I want to bind treeview on level basis. Please help and suggest me.


Thanks in advance
Posted
Comments
Karthik_Mahalingam 20-Dec-13 7:44am    
Please add more info...

1 solution

markup:
XML
<form id="form1" runat="server">
    <div>
        <asp:TreeView runat="server" ID="tvw">
        </asp:TreeView>
    </div>
    </form>


code bebind:
C#
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";
          
    //tvw.Nodes.Add(new TreeNode("Root", "-1"));

    TreeNode node = null;
    int previousLevel = 0;
    TreeNodeCollection coll = null;// = tvw.Nodes[0].ChildNodes;

    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.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900