Toon posts:

[ASP.NET] Extra informatie toevoegen aan TreeNode

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,

Bij een treeNode kan ik de text en de value ingeven. Nu wil ik extra informatie in de treenode stoppen. Ik heb hiervoor een eigen Class myTreeNode gemaakt met een inherit naar System.Web.UI.WebControls.TreeNode.

Als ik nu de informatie uit de treenode wil halen gaat het mis, een catch error: Unable to cast object of type 'System.Web.UI.WebControls.TreeNode' to type 'myTreeNode'.

de code van mijn myTreeNode:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Public Class myTreeNode
  Inherits System.Web.UI.WebControls.TreeNode

  Dim _menuVisible As Boolean
  Dim _menuUrl As String
  Dim _usergroupID As Integer
  Dim _dateCreated As String
  Dim _createdBy As String

  Public Property menuVisible() As Object
    Get
      Return _menuVisible
    End Get
    Set(ByVal value As Object)
      _menuVisible = value
    End Set
  End Property

  Public Property menuUrl() As Object
    Get
      Return _menuUrl
    End Get
    Set(ByVal value As Object)
      _menuUrl = value
    End Set
  End Property

...


En de code om de informatie uit de nodes te halen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
  Sub TransferNodeToForm(ByVal selnode As TreeNode)

    Dim myNode As New myTreeNode

    myNode = DirectCast(selnode, myTreeNode)

    txtMenuTitle.Text = myNode.Text
    txtURL.Text = myNode.menuUrl
    txtUserGroupID = myNode.userGroupID
    txtDateCreated = myNode.dateCreated
    txtCreatedBy = myNode.createdBy

  End Sub


kan IEMAND mij uitleggen waarom die Cast niet wil lukken ? Alvast heel vriendelijk bedankt voor alle hulp.

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Hoe maak je je treenodes aan? Het lijkt er namelijk op dat je een gewone TreeNode probeert te forceren naar jouw subclass en dat kan niet.

  • lier
  • Registratie: Januari 2004
  • Laatst online: 18:24

lier

MikroTik nerd

Waarom geef je de TreeNode mee aan de methode en niet de subclass (myTreeNode) ?
Nu probeer je een gewone TreeNode te casten naar jouw Node wat natuurlijk niet kan.

Eerst het probleem, dan de oplossing


Verwijderd

Topicstarter
Hoe maak je je treenodes aan? Het lijkt er namelijk op dat je een gewone TreeNode probeert te forceren naar jouw subclass en dat kan niet.
Ik maak de nodes aan door een myNode aan te maken, deze te vullen met data en vervolgens aan de TreeView te hangen.

m.a.w:

Dim mytn As New TreeNode
mytn.value1 = "bla bla bla"
mytn.value2 = "bla bla bla"
mytn.value3 = "bla bla bla"

menuTree.Nodes.Add(mytn)

Dit gebeurt allemaal in een recursieve functie zodat de gegevens uit de database in de juiste hierarchie in de database worden weggeschreven.

Ik heb het idee dat de conversie van de SelectedNode verkeerd gaat omdat de SelectedNode ook weer een afgevaardigde is van de System.Web.UI.Controls.TreeNode

Iemand enig idee of er een groot verschil bestaat tussen de Windows.Forms.TreeNode en de System.Web.UI.Controls.TreeNode ? Ik heb het idee dat dit in ASP.NET misschien wel niet mogelijk is.... terwijl ik er toch voorbeelden van op het net heb gevonden.

Verwijderd

Topicstarter
lier schreef op woensdag 02 augustus 2006 @ 13:40:
Waarom geef je de TreeNode mee aan de methode en niet de subclass (myTreeNode) ?
Nu probeer je een gewone TreeNode te casten naar jouw Node wat natuurlijk niet kan.
Wat ik eigenlijk doe is de TreeView.SelectedNode naar de functie TransferNodeToForm te sturen. Deze zou ik in de head van de functie ook direct kunnen laten casten naar een myTreeNode .. dit geeft echter hetzelfde probleem.

TreeView.SelectedNode casten naar myTreeNode gaat gewoon niet goed.

Maak maar eens een simpele functie waarbij je myTreeNodes toevoegd aan een lege treeview en probeer deze vervolgens eruit te halen. Hij blijft hangen op die Cast.

Verwijderd

Hetzelfde gebeurt ook als je een eventhandler aan TreeNodePopulate hangt en dan de node uit de EventArgs haalt:
C#:
1
2
3
4
void treeView_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
    myTreeNode parentNode = e.Node as myTreeNode; //parentNode is Null
}


Ik denk dat alleen de waardes worden opgeslagen (in de viewstate) en van deze waardes weer een TreeNode wordt gegenereerd als deze nodig is, waardoor alle object informatie van myTreeNode verloren is gegaan.
Pagina: 1