asp.net - Generate TreeView Control Dynamically from Query (VB.NET) -


i have never used treeviews in past , want display hierarchical structure (recursive relationship of n levels). data (available in dataset - retrieved database query) in following structure:

__id__  | __name__  | __parent__   1      | patrick   |         2      | mark      |  3      | scott     | 2  4      | jason     |   5      | julian    |  6      | john      | 6  7      | steve     |  8      | george    | 1   9      | robert    | 1  10     | rodney    | 8 

i'm trying produce following output

- patrick [1]   - george [8]     - rodney [10]   - robert [9]  - mark [2]   - scott [3]  - julian [5]   - john [6]  - jason [4]  - steve [7] 

i'm trying generate treeview control have no experience treeviews. feedback or examples on how achieve appreciated.

to fill treeview datatable, try following code

dim datatable1 new datatable  private sub filltesttable()     datatable1.columns.add("id", gettype(integer))     datatable1.columns.add("name", gettype(string))     datatable1.columns.add("parent", gettype(integer))     datatable1.columns.add("level", gettype(integer))      datatable1.rows.add(1, "patrick")     datatable1.rows.add(2, "mark")     datatable1.rows.add(3, "scott", 2)     datatable1.rows.add(4, "jason")     datatable1.rows.add(5, "julian")     datatable1.rows.add(6, "john", 5)     datatable1.rows.add(7, "steve")     datatable1.rows.add(8, "george", 1)     datatable1.rows.add(9, "robert", 1)     datatable1.rows.add(10, "rodney", 8)      dim integer      = 0 datatable1.rows.count - 1         dim id1 string = datatable1.rows(i).item("id").tostring         datatable1.rows(i).item("level") = findlevel(id1, 0)     next end sub  private function findlevel(byval id string, byref level integer) integer     dim integer      = 0 datatable1.rows.count - 1         dim id1 string = datatable1.rows(i).item("id").tostring         dim parent1 string = datatable1.rows(i).item("parent").tostring          if id = id1             if parent1 = ""                 return level             else                 level += 1                 findlevel(parent1, level)             end if         end if     next      return level end function 

code vb.net windowsforms application

private sub createtree()     dim maxlevel1 integer = cint(datatable1.compute("max(level)", ""))      dim i, j integer      = 0 maxlevel1         dim rows1() datarow = datatable1.select("level = " & i)          j = 0 rows1.count - 1             dim id1 string = rows1(j).item("id").tostring             dim name1 string = rows1(j).item("name").tostring             dim parent1 string = rows1(j).item("parent").tostring              if parent1 = ""                 treeview1.nodes.add(id1, name1)             else                 dim treenodes1() treenode = treeview1.nodes.find(parent1, true)                  if treenodes1.length > 0                     treenodes1(0).nodes.add(id1, name1)                 end if             end if         next     next end sub  private sub button1_click(sender system.object, e system.eventargs) handles button1.click     filltesttable()     createtree()     treeview1.expandall() end sub 

code asp.net application

private sub createtree()     dim maxlevel1 integer = cint(datatable1.compute("max(level)", ""))      dim i, j integer      = 0 maxlevel1         dim rows1() datarow = datatable1.select("level = " & i)          j = 0 rows1.count - 1             dim id1 string = rows1(j).item("id").tostring             dim name1 string = rows1(j).item("name").tostring             dim parent1 string = rows1(j).item("parent").tostring              if parent1 = ""                 treeview1.nodes.add(new treenode(name1, id1))             else                 dim node1 treenode = getchildbyvalue(parent1, treeview1.nodes)                  if not node1 nothing                     node1.childnodes.add(new treenode(name1, id1))                 end if             end if         next     next end sub  private function getchildbyvalue(byval id1 string, byval nodecollection1 treenodecollection) treenode     each treenode1 treenode in nodecollection1         if treenode1.value = id1             return treenode1         else             dim treenode2 treenode = getchildbyvalue(id1, treenode1.childnodes)              if not treenode2 nothing                 return treenode2             end if         end if     next      return nothing end function  protected sub button1_click(sender object, e eventargs) handles button1.click     filltesttable()     createtree()     treeview1.expandall() end sub 

Comments