如何在asp.net TreeView中的树节点中存储数组数据

时间:2013-05-09 06:41:47

标签: c# asp.net treeview

我想动态地将对象数据存储到TreeView节点(在应用程序运行时)。在Windows窗体中,我使用

node.tag = ? 

没关系。我试试

node.DataItem = something 

但它是readonly。那么如何将对象数据存储在ASP.NET TreeView节点中呢?

2 个答案:

答案 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;
        }
    }
}