Recursively binding tree menus
Public Void Bindtreevew (Treeview, Bool Isexpanded, String Selected)
{
// Converts the obtained data to a datatable.
Datatable dt = Getdatatable ();
Treeview. nodes. Clear (); // Clear all nodes in the tree
// Filter Array
Datarow [] rowlist = DT. Select ( " Parentid = '0' " );
If (Rowlist. Length <= 0 ) Return ;
// Create and Node
Treenode rootnode = New Treenode ();
Rootnode. Text = Rowlist [ 0 ] [ " Text " ]. Tostring ();
Rootnode. Value = Rowlist [ 0 ] [ " Nodeid " ]. Tostring ();
Rootnode. Expanded = Isexpanded;
Rootnode. Selected = True ;
// Add a heel Node
Treeview. nodes. Add (rootnode );
Createchildnode (rootnode, DT, isexpanded, seleced );
}
Private Void Createchildnode (treenode parentnode, datatable DT, Bool Isexpanded, String Seleced)
{
// Select data
Datarow [] rowlist = DT. Select ( " Parentid = " + Convert. toint32 (parentnode. Value ));
Foreach (Datarow row In Rowlist)
{
// A new node is created.
Treenode Node = New Treenode ();
Node. Text = Row [ " Text " ]. Tostring ();
Node. Value = Row [ " Nodeid " ]. Tostring ();
Node. navigateurl = Row [ " URL " ]. Tostring ();
Node. Expanded = Isexpanded;
If (Node. Value = Seleced)
{
Node. Selected = True ;
}
Parentnode. childnodes. Add (node );
// Recursive call to create other nodes
Createchildnode (node, DT, isexpanded, seleced );
}
}