I&#039;ve got a treeview control from telerik.com and I am trying to link two tables. I&#039;ve had the treeview working on one table which contains two levels using id and parent as the relations for a recursive function. This table is the categories table and needs to show categories and sub categories. I now need to add products under the relevant categories. I&#039;ve followed the example telerik provided but this doesnt recurse through the first table so it displays all the categories and sub categories on one level and the products in the relevant categories underneath that. Below is the code I have at the moment. The top section up to (&#039;####### Stuck here) pulls the two tables and relates them into a dataset. Below this is the set of normal code for treeview to display the relations in the table. How can I get it to recursively itterate through the products table aswell so that it displays correcty?<BR><BR><BR><BR>Private Sub GenerateTreeView()<BR> <BR> Dim dbCon As New SqlConnection("server=server;uid=uid;pwd=pwd;datab ase=db")<BR> &#039;Dim dbCon As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("db2.mdb"))<BR> &#039;Dim cmdSelectNavigation As New SqlCommand("spSelectNavigation",dbCon)<BR> &#039;cmdSelectNavigation.CommandType = CommandType.StoredProcedure<BR> dbCon.Open()<BR> <BR> <BR> Dim adapter As New SqlDataAdapter("spSelectNavigation", dbCon)<BR> Dim ds As New DataSet()<BR> <BR> Dim categoryTable As New DataTable()<BR> Dim productTable As New DataTable()<BR> Dim categoryAdapter As New SqlDataAdapter("spSelectCategoryNavigation", dbCon)<BR> Dim productAdapter As New SqlDataAdapter("spSelectProductNavigation", dbCon)<BR> categoryAdapter.Fill(categoryTable)<BR> productAdapter.Fill(productTable)<BR> ds.Tables.Add(categoryTable)<BR> ds.Tables.Add(productTable)<BR> <BR> ds.Relations.Add("CateogryGroup", ds.Tables(0).Columns("nid"), ds.Tables(1).Columns("category"))<BR> ds.Relations.Add("NodeRelation", ds.Tables(0).Columns("nid"), ds.Tables(0).Columns("parent"))<BR><BR>&#039;##### # Stuck Here<BR> <BR> Dim dbRow As DataRow<BR> For Each dbRow In ds.Tables(0).Rows<BR> If dbRow.IsNull("parent") Then<BR> Dim node As RadTreeNode = CreateNode(dbRow("title").ToString(), True,dbRow("nid"))<BR> RadTree1.AddNode(node)<BR> RecursivelyPopulate(dbRow, node)<BR> End If<BR> Next dbRow<BR> End Sub &#039;GenerateTreeView<BR><BR>&#039;###### To Here <BR> <BR> Private Sub RecursivelyPopulate(dbRow As DataRow, node As RadTreeNode)<BR> Dim childRow As DataRow<BR> For Each childRow In dbRow.GetChildRows("NodeRelation")<BR> Dim childNode As RadTreeNode = CreateNode(childRow("title").ToString(), True,childRow("nid"))<BR> node.AddNode(childNode)<BR> RecursivelyPopulate(childRow, childNode)<BR> Next childRow<BR> End Sub &#039;RecursivelyPopulate<BR> <BR> <BR> Private Function CreateNode([text] As String, expanded As Boolean, nid As Integer) As RadTreeNode<BR> Dim node As New RadTreeNode([text])<BR> node.Expanded = False<BR> node.Value = nid<BR> <BR> Return node<BR> End Function &#039;CreateNode<BR> <BR> <BR> Private Sub Page_Load(sender As Object, e As System.EventArgs)<BR> If Not Page.IsPostBack Then<BR> GenerateTreeView()<BR> End If<BR> End Sub &#039;Page_Load<BR><BR><BR>TIA<BR>Lloyd