Asp.net 递归获取treeview数据绑定到下拉列表
Treeview数据都是结构性的,一层一层的数据。如下图:文件夹结构
单在特定的区域要求将数据绑定到下拉列表的时候,所占的空间会更小,但怎样才能将这中结构在下拉列表上体现出来呢。如上图
测试文档2和测试文档1为一级目录,Test&aimee为测试文档2下的节点;aimee,aimee1,test1为测试文档1下的节点。
在下拉列表中怎样体现这种效果呢。。。先上效果图:
下面讲解一下思路:
- 树控件中的数据是通过递归的方法绑定的。
- 同样地下拉列表的数据也可以通过递归的方法绑定,或者用循环也可以。(不建议直接绑定数据源,需要通过再次修改才能达到效果)
- 方法需要带入数据源和节点级别
- 同时编写文字前面区分的“-”号的方法。
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; }