У меня есть класс, который наследует TreeNode, называемый ExtendedTreeNode. Чтобы добавить объект этого типа в дерево, это не проблема. Но как получить объект из дерева?Как наследовать от класса treenode?
Я попытался это:
TreeNode node = tvManual.Find("path/to/node"); // tvManual is a treeview
return ((ExtendedTreeNode)node).Property;
Но это не работает. Я получаю эту ошибку: Невозможно передать объект типа «System.Web.UI.WebControls.TreeNode» для ввода «PCK_Web_new.Classes.ExtendedTreeNode».
Что мне нужно сделать, чтобы сделать эту работу?
------------ РЕШЕНИЕ -----------------
[Редактировать] Мой пользовательский класс TreeNode выглядит следующим образом:
public class ExtendedTreeNode : TreeNode
{
private int _UniqueId;
public int UniqueId
{
set { _UniqueId = value; }
get { return _UniqueId; }
}
public ExtendedTreeNode()
{
}
}
И таким образом я добавляю узлы к моему 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);
И таким образом я получить мой ExtendedTreeNode объект:
TreeNode node = tvManual.Find("path/to/node");
ExtendedTreeNode extNode = node as ExtendedTreeNode;
return extNode.UniqueId;
Я использую .NET 3.5 SP1
Все добавленные вами узлы типа ExtendedTreeNode? или вы также добавляете обычные объекты TreeNode? Возможно, вы могли бы показать, как вы добавляете их в TreeView. – SwDevMan81
Да, все узлы должны иметь тип ExtendedTreeNode – Martijn
Как-то (по крайней мере, в ASP.NET) 'TreeView' преобразует унаследованные' TreeNode' в 'TreeNode'. Я попробовал переопределить «Clone», но это не помогло. Мои расширенные 'TreeNode' все равно превращаются в обычные. Думаю, мне нужно будет использовать отражатель или что-то посмотреть, что происходит. –