Asp.net 递归获取treeview数据绑定到下拉列表

Asp.net 递归获取treeview数据绑定到下拉列表

Treeview数据都是结构性的,一层一层的数据。如下图:文件夹结构

                       

单在特定的区域要求将数据绑定到下拉列表的时候,所占的空间会更小,但怎样才能将这中结构在下拉列表上体现出来呢。如上图

测试文档2和测试文档1为一级目录,Test&aimee为测试文档2下的节点;aimee,aimee1,test1为测试文档1下的节点。

在下拉列表中怎样体现这种效果呢。。。先上效果图:

 

下面讲解一下思路:

  1. 树控件中的数据是通过递归的方法绑定的。
  2. 同样地下拉列表的数据也可以通过递归的方法绑定,或者用循环也可以。(不建议直接绑定数据源,需要通过再次修改才能达到效果)
  3. 方法需要带入数据源和节点级别
  4. 同时编写文字前面区分的“-”号的方法。

4.1 方法返回‘-’号组合的字符串,如第一级节点返回空,即没有‘-’号;第二级节点返回一个‘-’号,第三极节点返回两个‘-‘,依此类推。。

5. 绑定数据,带入第一个节点时,设置绑定数据,设置级别。

6. 查询该节点下是否有子节点,有获取子节点,组装子节点的字符,再绑定。无,返回,继续添加第一级节点。

部分代码如下:

private void Getfolder(SPFolder rootfolder,int level) 
        {
            
            
            if (rootfolder.SubFolders.Count > 0)
            {
                foreach (SPFolder folder in rootfolder.SubFolders)
                {
                    if (folder.Name.ToString() != "Forms")
                    {
                        string index = GetIndex(level) ;
                        this.DroplistType.Items.Add(new ListItem(index+folder.Name.ToString(), folder.UniqueId.ToString()));

                        int lev = level + 1;
                        Getfolder(folder, lev);
                        
                    }
                }
            }
            else 
            {
                level = 0;
            }
        }
private string GetIndex(int level)
        {
            string index="";
            
            for (int i = 0; i < level;i++ )
            {
                index += "-";
            }
            
            return index;
        }
原文地址:https://www.cnblogs.com/zchblog/p/3101406.html