【发布时间】:2009-09-17 11:13:32
【问题描述】:
我有一个继承自 TreeNode 的类,称为 ExtendedTreeNode。将这种类型的对象添加到树视图中不是问题。但是如何从树视图中检索对象?
我试过这个:
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()
{
}
}
这样我将节点添加到我的树视图中:
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
【问题讨论】:
-
你添加的Node都是ExtendedTreeNode吗?还是您也添加常规 TreeNode 对象?也许您可以展示如何将它们添加到 TreeView。
-
是的,所有节点都必须是 ExtendedTreeNode 类型
-
不知何故(至少在 ASP.NET 中)
TreeView将继承的TreeNodes 转换为TreeNodes。我试过覆盖Clone,但这没有帮助。我扩展的TreeNodes 仍然以某种方式变回了普通的。我想我需要使用反射器或其他东西来看看发生了什么。
标签: c# asp.net treeview treenode