C# 生成树的TreeView问题

C# 生成树的TreeView问题,c#,asp.net,.net,treeview,C#,Asp.net,.net,Treeview,我必须动态地生成树视图,在这里我发现了要在第n级生成的问题 我可以使用以下代码在两个级别生成树: protected void Page_Load(object sender, EventArgs e) { TreeProvider cmsTree = new TreeProvider(MembershipContext.AuthenticatedUser); var node = cmsTree.SelectSingleNode(SiteContext.Curr

我必须动态地生成树视图,在这里我发现了要在第n级生成的问题

我可以使用以下代码在两个级别生成树:

protected void Page_Load(object sender, EventArgs e)
{
        TreeProvider cmsTree = new TreeProvider(MembershipContext.AuthenticatedUser);
        var node = cmsTree.SelectSingleNode(SiteContext.CurrentSiteName, "/", "en-US");

        TreeNodeCollection myChildren = node.AllChildren;
        IEnumerable<TreeNode> treeNodes = myChildren.AsEnumerable<TreeNode>();

        for (int i = 0; i < 3; i++)
        {
            foreach (var tree in treeNodes.Where(x => x.NodeLevel == i))
            {
                System.Web.UI.WebControls.TreeNode ParentNode = new System.Web.UI.WebControls.TreeNode();
                ParentNode.Text = "Document ID " + tree.DocumentID.ToString() + ". " + tree.DocumentName.ToString() + " Level " + tree.NodeLevel + " Parent " + tree.NodeParentID + " Node ID " + tree.NodeID;
                ParentNode.Value = tree.DocumentID.ToString();
                AddNodes(ParentNode);
                tvContentTree.Nodes.Add(ParentNode);
            }
        }
}
/// <summary>
/// Adding child for the parent 
/// </summary>
/// <param name="tNode"></param>
private void AddNodes(System.Web.UI.WebControls.TreeNode tNode)
{
        TreeProvider cmsTree = new TreeProvider(MembershipContext.AuthenticatedUser);
        var node = cmsTree.SelectSingleNode(SiteContext.CurrentSiteName, "/", "en-US");

        TreeNodeCollection myChildren = node.AllChildren;
        IEnumerable<TreeNode> treeNodes = myChildren.AsEnumerable<TreeNode>();            

        foreach (var tree in treeNodes.Where(x => x.NodeParentID == Convert.ToInt32(tNode.Value)))
        {
            System.Web.UI.WebControls.TreeNode ChildNode = new System.Web.UI.WebControls.TreeNode();
            ChildNode.Text = "Document ID " + tree.DocumentID.ToString() + ". " + tree.DocumentName.ToString() + " Level " + tree.NodeLevel + " Parent " + tree.NodeParentID + " Node ID " + tree.NodeID;
            ChildNode.Value = tree.DocumentID.ToString();
            tNode.ChildNodes.Add(ChildNode);  
       }
}
受保护的无效页面加载(对象发送方,事件参数e)
{
TreeProvider cmsTree=新的TreeProvider(MembershipContext.AuthenticatedUser);
var node=cmsTree.SelectSingleNode(SiteContext.CurrentSiteName,“/”,“en-US”);
TreeNodeCollection myChildren=node.AllChildren;
IEnumerable treeNodes=myChildren.AsEnumerable();
对于(int i=0;i<3;i++)
{
foreach(树节点中的var树,其中(x=>x.NodeLevel==i))
{
System.Web.UI.WebControls.TreeNode ParentNode=new System.Web.UI.WebControls.TreeNode();
ParentNode.Text=“Document ID”+tree.DocumentID.ToString()+”+tree.DocumentName.ToString()+“Level”+tree.NodeLevel+“Parent”+tree.NodeParentID+“Node ID”+tree.NodeID;
ParentNode.Value=tree.DocumentID.ToString();
AddNodes(ParentNode);
tvContentTree.Nodes.Add(父节点);
}
}
}
/// 
///为父级添加子级
/// 
/// 
私有void AddNodes(System.Web.UI.WebControls.TreeNode tNode)
{
TreeProvider cmsTree=新的TreeProvider(MembershipContext.AuthenticatedUser);
var node=cmsTree.SelectSingleNode(SiteContext.CurrentSiteName,“/”,“en-US”);
TreeNodeCollection myChildren=node.AllChildren;
IEnumerable treeNodes=myChildren.AsEnumerable();
foreach(treeNodes.Where(x=>x.NodeParentID==Convert.ToInt32(tNode.Value))中的var树)
{
System.Web.UI.WebControls.TreeNode ChildNode=new System.Web.UI.WebControls.TreeNode();
ChildNode.Text=“Document ID”+tree.DocumentID.ToString()+”+tree.DocumentName.ToString()+“Level”+tree.NodeLevel+“Parent”+tree.NodeParentID+“Node ID”+tree.NodeID;
ChildNode.Value=tree.DocumentID.ToString();
tNode.ChildNodes.Add(ChildNode);
}
}
我们如何重写代码以生成第n层的树?

我自己解决了这个问题

    protected void Page_Load(object sender, EventArgs e)
    {
        TreeProvider cmsTree = new TreeProvider(MembershipContext.AuthenticatedUser);
        var node = cmsTree.SelectSingleNode(SiteContext.CurrentSiteName, "/", "en-US");

            TreeNodeCollection myChildren = node.AllChildren;
            IEnumerable<TreeNode> treeNodes = myChildren.AsEnumerable<TreeNode>();
            foreach (var tree in treeNodes.Where(x => x.NodeLevel ==0))
            {
                System.Web.UI.WebControls.TreeNode ParentNode = new System.Web.UI.WebControls.TreeNode();
                ParentNode.Text = "Root";
                ParentNode.Value = tree.NodeID.ToString();
                AddNodes(ParentNode);
                tvContentTree.Nodes.Add(ParentNode);
            }           

    }
    /// <summary>
    /// Adding child for the parent 
    /// </summary>
    /// <param name="tNode"></param>
    private void AddNodes(System.Web.UI.WebControls.TreeNode tNode)
    {
        TreeProvider cmsTree = new TreeProvider(MembershipContext.AuthenticatedUser);
        var node = cmsTree.SelectSingleNode(SiteContext.CurrentSiteName, "/", "en-US");

        TreeNodeCollection myChildren = node.AllChildren;
        IEnumerable<TreeNode> childTreeNodes = myChildren.AsEnumerable<TreeNode>();

        foreach (var childTree in childTreeNodes.Where(x => x.NodeParentID == Convert.ToInt32(tNode.Value)))
        {
            System.Web.UI.WebControls.TreeNode ChildNode = new System.Web.UI.WebControls.TreeNode();
            ChildNode.Text = childTree.DocumentName.ToString();
            ChildNode.Value = childTree.NodeID.ToString();
            tNode.ChildNodes.Add(ChildNode);                
            AddNodes(ChildNode);
        }
    }
受保护的无效页面加载(对象发送方,事件参数e)
{
TreeProvider cmsTree=新的TreeProvider(MembershipContext.AuthenticatedUser);
var node=cmsTree.SelectSingleNode(SiteContext.CurrentSiteName,“/”,“en-US”);
TreeNodeCollection myChildren=node.AllChildren;
IEnumerable treeNodes=myChildren.AsEnumerable();
foreach(树节点中的var树,其中(x=>x.NodeLevel==0))
{
System.Web.UI.WebControls.TreeNode ParentNode=new System.Web.UI.WebControls.TreeNode();
ParentNode.Text=“Root”;
ParentNode.Value=tree.NodeID.ToString();
AddNodes(ParentNode);
tvContentTree.Nodes.Add(父节点);
}           
}
/// 
///为父级添加子级
/// 
/// 
私有void AddNodes(System.Web.UI.WebControls.TreeNode tNode)
{
TreeProvider cmsTree=新的TreeProvider(MembershipContext.AuthenticatedUser);
var node=cmsTree.SelectSingleNode(SiteContext.CurrentSiteName,“/”,“en-US”);
TreeNodeCollection myChildren=node.AllChildren;
IEnumerable childTreeNodes=myChildren.AsEnumerable();
foreach(childTreeNodes.Where中的var childTree(x=>x.NodeParentID==Convert.ToInt32(tNode.Value)))
{
System.Web.UI.WebControls.TreeNode ChildNode=new System.Web.UI.WebControls.TreeNode();
ChildNode.Text=childTree.DocumentName.ToString();
ChildNode.Value=childTree.NodeID.ToString();
tNode.ChildNodes.Add(ChildNode);
AddNodes(ChildNode);
}
}