Results 1 to 1 of 1

Thread: problem with treeview-object...

  1. #1

    Thread Starter
    Hyperactive Member fabianus's Avatar
    Join Date
    Sep 2004
    Location
    Paris
    Posts
    402

    Question problem with treeview-object...

    I had the following problem with a treeview object:

    As I have a quite big treeview-object, so that I store the built treeview-object in a session-variable (to win time when reloading a page). But when I attributed the stored object to the object placed in the page, the tree stays blanc. (first code)

    To resolve the problem I put a placeholder in the page and then I attributed to the placeholder the treeview-object (second code). But now I do not know how to handle when someone clicks a noed-item.

    So my problem can have two solutions:
    1) get rid of the place-holder-solution and find how to attribute the stored treeview object to the treeview-object that is in the page. (=> I would prefer this solution)
    2) or find out how to manage click events on the tree-object, when it is stored in a place-holder.

    I would be very thankful if anybody could help me !!



    first code (without placehoder, but it doesn't work when loading the page)
    VB Code:
    1. Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2.         fill_TreeView()
    3.     End Sub
    4.     Public my_hierarchy As hierarchy
    5.     Public my_dataset As DataSet
    6.     Protected WithEvents TreeView1 As Microsoft.Web.UI.WebControls.TreeView
    7.     Sub New()
    8.         my_hierarchy = HttpContext.Current.Session("my_product_hierarchy")
    9.         my_dataset = my_hierarchy.my_dataset_all_hierarchy_elements
    10.     End Sub
    11.     Public Function fill_TreeView()
    12.         If HttpContext.Current.Session("my_TreeView") Is Nothing Then
    13.             Treeview1 = New Microsoft.Web.UI.WebControls.TreeView
    14.             Dim TreeNode As Microsoft.Web.UI.WebControls.TreeNode
    15.             Dim my_DataView As DataView = New DataView
    16.             my_DataView.Table = my_dataset.Tables(0)
    17.             my_DataView.RowFilter = "parent_id = 0"
    18.  
    19.             For Each my_row As DataRowView In my_DataView
    20.                 TreeNode = New Microsoft.Web.UI.WebControls.TreeNode
    21.                 TreeNode.Text = my_row("short_name")
    22.                 TreeNode.ID = my_row("id")
    23.                 add_sub_MenuItems(TreeNode)
    24.                 Treeview1.Nodes.Add(TreeNode)
    25.             Next
    26.             HttpContext.Current.Session("my_TreeView") = Treeview1
    27.         Else
    28.             Dim Treeview_tmp As Microsoft.Web.UI.WebControls.TreeView = HttpContext.Current.Session("my_TreeView")
    29.             Treeview1 = Treeview_tmp
    30.         End If
    31.         treeview_inpage = TreeView1 'here is my problem : the treeview_inpage-object is well filled (tested it with treeview_inpage.Nodes.Count), but it keeps blanc at the output...
    32.     End Function
    33.     Private Function add_sub_MenuItems(ByRef parent_TreeNode As Microsoft.Web.UI.WebControls.TreeNode)
    34.         Dim TreeNode As Microsoft.Web.UI.WebControls.TreeNode
    35.         Dim my_DataView As DataView = New DataView
    36.         my_DataView.Table = my_dataset.Tables(0)
    37.         my_DataView.RowFilter = "parent_id = " & parent_TreeNode.ID
    38.  
    39.         For Each my_row As DataRowView In my_DataView
    40.             TreeNode = New Microsoft.Web.UI.WebControls.TreeNode
    41.             TreeNode.Text = my_row("short_name")
    42.             TreeNode.ID = my_row("id")
    43.             add_sub_MenuItems(TreeNode)
    44.             parent_TreeNode.Nodes.Add(TreeNode)
    45.         Next
    46.     End Function

    second code (with placehoder, but I do not know how to manage click-evnets...)
    VB Code:
    1. Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2.         fill_TreeView()
    3.     End Sub
    4.     Public my_hierarchy As hierarchy
    5.     Public my_dataset As DataSet
    6.     Public Treeview1 As Microsoft.Web.UI.WebControls.TreeView
    7.     Sub New()
    8.         my_hierarchy = HttpContext.Current.Session("my_product_hierarchy")
    9.         my_dataset = my_hierarchy.my_dataset_all_hierarchy_elements
    10.     End Sub
    11.     Public Function fill_TreeView()
    12.         If HttpContext.Current.Session("my_TreeView") Is Nothing Then
    13.             Treeview1 = New Microsoft.Web.UI.WebControls.TreeView
    14.             Dim TreeNode As Microsoft.Web.UI.WebControls.TreeNode
    15.             Dim my_DataView As DataView = New DataView
    16.             my_DataView.Table = my_dataset.Tables(0)
    17.             my_DataView.RowFilter = "parent_id = 0"
    18.  
    19.             For Each my_row As DataRowView In my_DataView
    20.                 TreeNode = New Microsoft.Web.UI.WebControls.TreeNode
    21.                 TreeNode.Text = my_row("short_name")
    22.                 TreeNode.ID = my_row("id")
    23.                 add_sub_MenuItems(TreeNode)
    24.                 Treeview1.Nodes.Add(TreeNode)
    25.             Next
    26.             HttpContext.Current.Session("my_TreeView") = Treeview1
    27.         Else
    28.             Dim Treeview_tmp As Microsoft.Web.UI.WebControls.TreeView = HttpContext.Current.Session("my_TreeView")
    29.             Treeview1 = Treeview_tmp
    30.         End If
    31.         PlaceHolder2.Controls.Add(Treeview1) ' when I use a placeholder like this it works, but I have a problem to deal with click-events...
    32.     End Function
    33.     Private Function add_sub_MenuItems(ByRef parent_TreeNode As Microsoft.Web.UI.WebControls.TreeNode)
    34.         Dim TreeNode As Microsoft.Web.UI.WebControls.TreeNode
    35.         Dim my_DataView As DataView = New DataView
    36.         my_DataView.Table = my_dataset.Tables(0)
    37.         my_DataView.RowFilter = "parent_id = " & parent_TreeNode.ID
    38.  
    39.         For Each my_row As DataRowView In my_DataView
    40.             TreeNode = New Microsoft.Web.UI.WebControls.TreeNode
    41.             TreeNode.Text = my_row("short_name")
    42.             TreeNode.ID = my_row("id")
    43.             add_sub_MenuItems(TreeNode)
    44.             parent_TreeNode.Nodes.Add(TreeNode)
    45.         Next
    46.     End Function
    Last edited by fabianus; Apr 23rd, 2005 at 04:30 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width