TreeView
オブジェクト データをノードに動的に格納したい(アプリケーションの実行中)。Windowsフォームでは、私は使用します
node.tag = ?
大丈夫です。私は試します
node.DataItem = something
しかし、それは読み取り専用です。では、オブジェクト データを ASP.NET TreeView ノードに格納するにはどうすればよいでしょうか。
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;
}
}
}
ASP.NET TreeNode コントロールは、(WinForms コントロールとは対照的に) 現在作業しているものです。関連するプロパティが 2 つあります。
TreeNode.Text
- 実際にツリーに表示されるもの。
TreeNode.Value
- そのノードの基礎となる値。
DataItem
TreeView にデータソースをバインドしていない限り (あなたが発見したように) 、プロパティを台無しにしたくありません(それはあなたがやっているようには聞こえません)。それでも、それは値を取得するためだけです。そのままでは何も収納できません。