我想动态地将对象数据存储到TreeView
节点(在应用程序运行时)。在Windows窗体中,我使用
node.tag = ?
没关系。我试试
node.DataItem = something
但它是readonly。那么如何将对象数据存储在ASP.NET TreeView节点中呢?
答案 0 :(得分:0)
ASP.NET TreeNode control就是你现在正在使用的(而不是WinForms)。您有两个相关属性:
TreeNode.Text
- 树上实际显示的内容
TreeNode.Value
- 该节点的基础值。
除非您将数据源绑定到TreeView(它听起来不像您正在做的那样),否则您不希望弄乱DataItem
属性(如您所发现的那样)。即便如此,这只是为了获得价值;你不能存储任何东西。
答案 1 :(得分:0)
ASP.NET TreeNode中没有Tag属性,但您可以使用Tag属性来实现自己的treenode
How to extend a built-in TreeNode class of the ASP.NET TreeView control
using System.Web.UI.WebControls;
namespace CSASPNETInheritingFromTreeNode
{
public class CustomTreeView : TreeView
{
protected override TreeNode CreateNode()
{
return new CustomTreeNode(this, false);
}
}
public class CustomTreeNode : TreeNode
{
public object Tag { get; set; }
public CustomTreeNode() : base()
{
}
public CustomTreeNode(TreeView owner, bool isRoot) : base(owner, isRoot)
{
}
protected override void LoadViewState(object state)
{
object[] arrState = state as object[];
this.Tag = arrState[0];
base.LoadViewState(arrState[1]);
}
protected override object SaveViewState()
{
object[] arrState = new object[2];
arrState[1] = base.SaveViewState();
arrState[0] = this.Tag;
return arrState;
}
}
}