J'ai une classe qui hérite de TreeNode, appelée ExtendedTreeNode. Ajouter un objet de ce type à l'arborescence n'est pas un problème. Mais comment puis-je récupérer l'objet de l'arborescence?Comment hériter de la classe treenode?
J'ai essayé:
TreeNode node = tvManual.Find("path/to/node"); // tvManual is a treeview
return ((ExtendedTreeNode)node).Property;
Mais cela ne fonctionne pas. Je reçois cette erreur: Impossible de convertir l'objet de type 'System.Web.UI.WebControls.TreeNode' en type 'PCK_Web_new.Classes.ExtendedTreeNode'.
Que dois-je faire pour que cela fonctionne?
------------ SOLUTION -----------------
[Modifier] Ma classe TreeNode personnalisée ressemble à ceci:
public class ExtendedTreeNode : TreeNode
{
private int _UniqueId;
public int UniqueId
{
set { _UniqueId = value; }
get { return _UniqueId; }
}
public ExtendedTreeNode()
{
}
}
Et ainsi ajouter des nœuds à mon TreeView:
ExtendedTreeNode TN2 = new ExtendedTreeNode();
TN2.Text = "<span class='Node'>" + doc.Title + "</span>";
TN2.Value = doc.ID.ToString();
TN2.NavigateUrl = "ViewDocument.aspx?id=" + doc.ID + "&doc=general&p=" + parent;
TN2.ImageUrl = "Graphics/algDoc.png";
TN2.ToolTip = doc.Title;
TN2.UniqueId = counter;
tvManual.FindNode(parent).ChildNodes.Add(TN2);
Et cette façon, je récupérer mon objet ExtendedTreeNode:
TreeNode node = tvManual.Find("path/to/node");
ExtendedTreeNode extNode = node as ExtendedTreeNode;
return extNode.UniqueId;
J'utilise .NET 3.5 SP1
Est-ce que tous les nœuds ajoutés sont de type ExtendedTreeNode? ou ajoutez-vous également des objets TreeNode réguliers? Peut-être pourriez-vous montrer comment vous les ajoutez à TreeView. – SwDevMan81
Oui, tous les nœuds doivent être de type ExtendedTreeNode – Martijn
D'une manière ou d'une autre (au moins dans ASP.NET) le 'TreeView' convertit le' TreeNode' hérité en 'TreeNode's. J'ai essayé de surcharger 'Clone', mais cela n'a pas aidé. Mes 'TreeNode' étendus sont encore retournés en réguliers d'une manière ou d'une autre. Je suppose que je devrais utiliser un réflecteur ou quelque chose pour voir ce qui se passe. –