treeview in page inherited from template has err on click

Discussion in 'ASP .Net Web Controls' started by DOK, Feb 1, 2004.

  1. DOK

    DOK Guest

    I've built a web page template .vb that contains a treeview built in code-behind. The code works when I copy it into a test .aspx page. My problem is that when I use the template .vb by inheriting it into an .aspx page, the treeview appears correctly but raises an error on the second click event. The treeview appears, and I click on an expandable node, and it expands, but the treeview doesn't respond to any further clicks, and I get an error in the lower left corner of IE about an object reference not being set. I believe that the error is in the javascript that is automatically generated for the control

    I have pasted the VB code below. But before I show you that, is this a correct approach? This treeview is the left nav for the Website's page template. Click events on the parent nodes just expand them. Click events on the child nodes have URLs to open other pages using the template. I wonder if I should make the treeview be a separate user control .ascx or custom control called in the template instead? Or some other approach?

    Thank you VERY much for helping me with this!!

    Private Sub LoadNav(
    Dim tnHome As New TreeNode(
    Dim tnClients As New TreeNode(
    Dim tnEditProject As New TreeNode(
    Dim tnEquipment As New TreeNode(
    Dim tnHome As New TreeNode(
    Dim tnInvoices As New TreeNode(
    Dim tnNewProject As New TreeNode(
    Dim tnProject As New TreeNode(
    Dim tnPurchase As New TreeNode(
    Dim tnReports As New TreeNode(

    'Treeview has 3 hierarchical levels. Some nodes have children & some don't
    'Some are both parent & child. Only create a TreeNode obj if it has child(ren)
    ' Parent
    ' Child
    ' Child
    ' Parent
    ' Child
    ' Parent&Child
    ' Child
    ' Child

    'Set treeview properties
    With tvwNa
    .EnableViewState = Tru
    .AutoPostBack = Tru
    .SelectExpands = Tru
    With .DefaultStyl
    .Add("font-size", "x-small"
    .Add("font-family", "Tahoma"
    .Add("color", "#006699"
    .Add("background-color", "#ffffff"
    .Add("padding", "1px"
    End Wit

    With .HoverStyl
    .Add("color", "#006699"
    .Add("font-weight", "600"
    .Add("background-color", "gold"
    End Wit

    With .SelectedStyl
    .Add("color", "#006699"
    .Add("font-weight", "600"
    .Add("background-color", "gold"
    End Wit
    End Wit

    'Build the treeview, populating it with pages that can be called
    AddParentNode(tnHome, "Home", "PrototypeHTMLOnly.aspx"

    AddParentNode(tnHome, "Home", ""
    AddChildNode("Company Documents", "CompanyDocs.aspx", tnHome

    AddParentNode(tnEquipment, "Equipment", "", tnHome
    AddChildNode("Equipment1", "Equipment1.aspx", tnEquipment
    AddChildNode("Equipment2", "Equipment2.aspx", tnEquipment
    AddChildNode("Equipment3", "Equipment3.aspx", tnEquipment
    AddChildNode("Equipment4", "Equipment4.aspx", tnEquipment
    AddChildNode("Equipment5", "Equipment5.aspx", tnEquipment
    AddChildNode("Equipment6", "Equipment6.aspx", tnEquipment

    AddChildNode("Web Application", "ApplicationDisplay.aspx", tnHome

    AddParentNode(tnPurchase, "Purchase", "", tnHome
    AddChildNode("Purchase1", "Purchase1.aspx", tnPurchase
    AddChildNode("Purchase2", "Purchase2.aspx", tnPurchase
    AddChildNode("Purchase3", "Purchase3.aspx", tnPurchase
    AddChildNode("Purchase4", "Purchase4.aspx", tnPurchase
    AddChildNode("Purchase5", "Purchase5.aspx", tnPurchase
    AddChildNode("Purchase6", "Purchase6.aspx", tnPurchase
    AddChildNode("Purchase7", "Purchase7.aspx", tnPurchase

    AddChildNode("Change Password", "ChangePassword.aspx", tnHome

    ‘……quite a few more parents & children omitted here

    'Add the treeview to the placeholder
    plcLeftNav.Controls.Add(tvwNav

    End Su

    Private Sub AddParentNode(ByRef tn As TreeNode,
    ByVal strText As String,
    ByVal strUrl As String, _
    Optional ByRef tnParent As TreeNode = Nothing)

    With tn
    .ID = strText
    .Text = strText
    .NavigateUrl = strUrl
    End With

    'If a parent node was passed, add this child node to it.
    If Not tnParent Is Nothing Then
    tnParent.Nodes.Add(tn)
    'If no parent node was passed, it's a child of the root.
    Else
    tvwNav.Nodes.Add(tn)
    End If

    End Sub

    Private Sub AddChildNode(ByVal strText As String, _
    ByVal strUrl As String, _
    ByRef tnParent As TreeNode)

    Dim tn As New TreeNode()

    With tn
    .ID = strText
    .Text = strText
    .NavigateUrl = strUrl
    End With

    tnParent.Nodes.Add(tn)

    End Sub
    DOK, Feb 1, 2004
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.

Share This Page