This tutorial will teach you how to bind Datatable to a Treeview using C#. For this tutorial, We will use a dynamically created datatable with sample data to understand the topic better.
How to Bind Datatable to Treeview Using C#
First, create a WinForm Application using your preferred version of Visual Studio. Once the application is created, add a Treeview control to it with the following properties:
Name: myTreeView

Create the Datatable
As mentioned above, we will create a datatable and add a few records. Use the code below to create the datatable;
public DataTable CreateDataTableEmployees()
{
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Department");
dataTable.Columns.Add("Employee");
// Add few records to the datatable
dataTable.Rows.Add("IT", "Fred");
dataTable.Rows.Add("IT", "Mike");
dataTable.Rows.Add("IT", "Natalie");
dataTable.Rows.Add("Engineering", "Lisa");
dataTable.Rows.Add("Engineering", "Paul");
dataTable.Rows.Add("HR", "Scott");
dataTable.Rows.Add("Research and Development", "Sean");
return dataTable;
}
Create the Bind Tree View Function
Now, add the function below to your code:
private void BindTreeView( DataTable dataTable)
{
int i = 0;
myTreeView.Nodes.Clear();
while (i < dataTable.Rows.Count)
{
DataRow row = dataTable.Rows[i];
//Get the department
string department = row.Field<string>(0) ?? "";
// Add department Node
TreeNode departmentNode = myTreeView.Nodes.Add(department);
while (i < dataTable.Rows.Count && row.Field<string>(0) == department)
{
// Get the Name
string name = row.Field<string>(1) ?? "";
//Add name to department Node
departmentNode.Nodes.Add(name);
while (i < dataTable.Rows.Count && row.Field<string>(0) == department && name == row.Field<string>(1))
{
if (++i < dataTable.Rows.Count)
row = dataTable.Rows[i];
}
}
}
}
The next step is to call the function above from the Page_Load Event:
private void Form1_Load(object sender, EventArgs e)
{
DataTable dataTable = this.CreateDataTableEmployees();
BindTreeView(dataTable);
}
Run the application; the result should look like the following:

Bonus: show a message when the user selects a node
To add more action to your Treeview, you can show a node value inside a message box when a user selects the node:
private void myTreeView_AfterSelect(object sender, TreeViewEventArgs e)
{
MessageBox.Show(myTreeView.SelectedNode.Text,"You have selected");
}

Happy Coding!
