0
私はページロード時にツリーデータを読み込むasp.netツリービューコントロールを持っています。以下のコード:ノードを展開するときにのみツリーノードをロードする
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DocEng.TreeProvider cmsTree = new DocEng.TreeProvider(MembershipContext.AuthenticatedUser);
var node = cmsTree.SelectSingleNode(SiteContext.CurrentSiteName, "/", "en-US");
DocEng.TreeNodeCollection myChildren = node.AllChildren;
IEnumerable<DocEng.TreeNode> TreeNodes = myChildren.AsEnumerable<DocEng.TreeNode>();
foreach (var tree in TreeNodes.Where(x => x.NodeLevel == 0))
{
System.Web.UI.WebControls.TreeNode ParenTreeNode = new System.Web.UI.WebControls.TreeNode();
ParenTreeNode.Text = tree.NodeID.ToString() + ". " + SiteContext.CurrentSiteName;
ParenTreeNode.Value = tree.NodeID.ToString();
AddNodes(ParenTreeNode);
tvContentTree.Nodes.Add(ParenTreeNode);
}
}
}
/// <summary>
/// Adding child for the parent
/// </summary>
/// <param name="TreeNode"></param>
private void AddNodes(System.Web.UI.WebControls.TreeNode TreeNode)
{
DocEng.TreeProvider cmsTree = new DocEng.TreeProvider(MembershipContext.AuthenticatedUser);
var node = cmsTree.SelectSingleNode(SiteContext.CurrentSiteName, "/", "en-US");
DocEng.TreeNodeCollection myChildren = node.AllChildren;
IEnumerable<DocEng.TreeNode> childTreeNodes = myChildren.AsEnumerable<DocEng.TreeNode>();
foreach (var childTree in childTreeNodes.Where(x => x.NodeParentID == Convert.ToInt32(TreeNode.Value)))
{
System.Web.UI.WebControls.TreeNode ChildNode = new System.Web.UI.WebControls.TreeNode();
ChildNode.Text = childTree.NodeID.ToString() + ". " + childTree.DocumentName.ToString();
ChildNode.Value = childTree.NodeID.ToString();
TreeNode.ChildNodes.Add(ChildNode);
AddNodes(ChildNode);
if (childTree.NodeLevel == 1)
ChildNode.Collapse();
}
}
ノードを展開するときにのみデータをロードするには、このコードを書き直す必要があります。さらに、データが展開されている間は、クリックされたノードとその子ノードにデータが移入されるだけです。
ここで何が問題なのかわかりません...自分でコードを書き直そうとしましたか? ['TreeNodeExpanded'](https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.treeview.treenodeexpanded(v = vs.110).aspx)を使用する必要があります。イベント。あなたはCMS \ CMSModules \ Content \ Controls \ ContentTree.ascxコントロールを見て、インスピレーションを得ることができます。 – rocky