Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅在展开节点时加载树节点_C#_Asp.net_.net_Treeview_Kentico - Fatal编程技术网

C# 仅在展开节点时加载树节点

C# 仅在展开节点时加载树节点,c#,asp.net,.net,treeview,kentico,C#,Asp.net,.net,Treeview,Kentico,我有一个asp.net树视图控件,它在页面加载时加载树数据。代码如下: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DocEng.TreeProvider cmsTree = new DocEng.TreeProvider(MembershipContext.AuthenticatedUser);

我有一个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();
            }
        }
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
DocEng.TreeProvider cmsTree=新的DocEng.TreeProvider(MembershipContext.AuthenticatedUser);
var node=cmsTree.SelectSingleNode(SiteContext.CurrentSiteName,“/”,“en-US”);
DocEng.TreeNodeCollection myChildren=node.AllChildren;
IEnumerable TreeNodes=myChildren.AsEnumerable();
foreach(树节点中的var树,其中(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);
添加(ParenTreeNode);
}
}
}
/// 
///为父级添加子级
/// 
/// 
私有void AddNodes(System.Web.UI.WebControls.TreeNode TreeNode)
{
DocEng.TreeProvider cmsTree=新的DocEng.TreeProvider(MembershipContext.AuthenticatedUser);
var node=cmsTree.SelectSingleNode(SiteContext.CurrentSiteName,“/”,“en-US”);
DocEng.TreeNodeCollection myChildren=node.AllChildren;
IEnumerable childTreeNodes=myChildren.AsEnumerable();
foreach(childTreeNodes.Where中的var childTree(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();
}
}

我需要重写这段代码,以便仅在扩展节点时加载数据。此外,在扩展时,数据应该只填充到单击的节点及其子节点,直到最后。

尝试在页面加载时只获取第一级节点,每个节点添加一个空的子节点,以使其可扩展


然后在展开后删除此子节点并用普通子节点填充它。

不确定这里的问题是什么……您是否尝试自己重写代码?您必须使用该事件。通过查看CMS\CMSModules\Content\Controls\ContentTree.ascx控件,您可以获得一些灵感。