【问题标题】:asp.net treeview with folders and file from database带有来自数据库的文件夹和文件的 asp.net 树视图
【发布时间】:2017-10-25 12:01:01
【问题描述】:

我需要根据数据库中的表数据将文件夹和文件绑定到树视图,我尝试了很多解决方案但未能满足特定要求。

这就是我在看的东西

顶级文件夹

我找到了一个示例代码并试图实现这一目标

`

 private void PopulateTreeview(DataTable dtFolders)
    {
        tvVendors.Nodes.Clear();
        HierarchyTrees hierarchyTrees = new HierarchyTrees();
        HierarchyTrees.HTree objHTree = null;
                    if (dtFolders.Rows.Count > 0)
                    {
                        foreach (DataRow dr in dtFolders.Rows)
                        {
                            objHTree = new HierarchyTrees.HTree();

                            objHTree.LevelDepth = int.Parse(dr["level"].ToString());
                            objHTree.NodeID = int.Parse(dr["folderid"].ToString());
                            objHTree.UnderParent = int.Parse(dr["parentid"].ToString());
                            objHTree.FIleName=dr["filename"].ToString();
                            objHTree.FilePath=dr["filepath"].ToString();
                            hierarchyTrees.Add(objHTree);
                        }

                    }
        //Iterate through Collections.
        foreach (HierarchyTrees.HTree hTree in hierarchyTrees)
        {
            //Filter the collection HierarchyTrees based on 
            //Iteration as per object Htree Parent ID 
            HierarchyTrees.HTree parentNode = hierarchyTrees.Find
            (delegate(HierarchyTrees.HTree vendor)
            { return vendor.NodeID == hTree.UnderParent; });
            //If parent node has child then populate the leaf node.
            if (parentNode != null)
            {
                foreach (TreeNode tn in tvVendors.Nodes)
                {
                    //If single child then match Node ID with Parent ID
                    if (tn.Value == parentNode.NodeID.ToString())
                    {   
                        tn.ChildNodes.Add(new TreeNode
                        (hTree.NodeDescription.ToString(), hTree.NodeID.ToString()));
                    }

                    //If Node has multiple child ,
                    //recursively traverse through end child or leaf node.
                    if (tn.ChildNodes.Count > 0)
                    {
                        foreach (TreeNode ctn in tn.ChildNodes)
                        {
                            RecursiveChild(ctn, parentNode.NodeID.ToString(), hTree);
                        }
                    }
                }
            }
            //Else add all Node at first level 
            else
            {
                tvVendors.Nodes.Add(new TreeNode
                (hTree.NodeDescription, hTree.NodeID.ToString()));
            }
        }
        tvVendors.ExpandAll();
    }

    public void RecursiveChild(TreeNode tn, string searchValue, HierarchyTrees.HTree hTree)
    {
        if (tn.Value == searchValue)
        {
            tn.ChildNodes.Add(new TreeNode
            (hTree.NodeDescription.ToString(), hTree.NodeID.ToString()));
        }
        if (tn.ChildNodes.Count > 0)
        {
            foreach (TreeNode ctn in tn.ChildNodes)
            {
                RecursiveChild(ctn, searchValue, hTree);
            }
        }
    }

问题:如果文件夹没有任何子文件夹,我无法将文件名绑定到叶节点。绑定文件。或者如果文件夹有子文件夹和文件both.bind都在同一级别。如果文件夹是空的,它什么都没有,只是将它绑定为空。

能否请测试代码提供一些解决方案`

【问题讨论】:

    标签: c# asp.net recursion treeview


    【解决方案1】:
      foreach (TreeNode childnode in GetChildFolderNode(dataRow[ID].ToString(), table))
                        {
                           //Bind all folders
                        }
                        foreach (TreeNode childnode in  GetChildFileNode(dataRow[ID].ToString(), table))
                        {
                            //bind all files
                        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多