3

TreeViewオブジェクト データをノードに動的に格納したい(アプリケーションの実行中)。Windowsフォームでは、私は使用します

node.tag = ? 

大丈夫です。私は試します

node.DataItem = something 

しかし、それは読み取り専用です。では、オブジェクト データを ASP.NET TreeView ノードに格納するにはどうすればよいでしょうか。

4

2 に答える 2

2

ASP.NET TreeNode には Tag プロパティはありませんが、Tag プロパティを使用して独自のツリーノードを実装できます

ASP.NET TreeView コントロールの組み込み TreeNode クラスを拡張する方法

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;
        }
    }
}
于 2013-05-09T14:06:09.823 に答える
0

ASP.NET TreeNode コントロールは、(WinForms コントロールとは対照的に) 現在作業しているものです。関連するプロパティが 2 つあります。

TreeNode.Text- 実際にツリーに表示されるもの。
TreeNode.Value- そのノードの基礎となる値。

DataItemTreeView にデータソースをバインドしていない限り (あなたが発見したように) 、プロパティを台無しにしたくありません(それはあなたがやっているようには聞こえません)。それでも、それは値を取得するためだけです。そのままでは何も収納できません。

于 2013-05-09T13:58:39.403 に答える