树开下拉列表数据源生成

改自这位兄台的一段代码

https://www.cnblogs.com/xiayang/archive/2010/07/19/1780566.html

 

 1     /// <summary>
 2     /// 生成一个树形的表样,
 3     /// </summary>
 4     /// <param name="dtNodeSets">菜单记录数据所在的表</param>
 5     /// <param name="parentColName">表中用于标记父记录的字段</param>
 6     /// <param name="rootValue">筛选的根值</param>
 7     /// <param name="indexColumn">索引列</param>
 8     /// <param name="textColName">文本列</param>
 9     /// <param name="i"></param>
10     /// <param name="outDt"></param>
11     protected void MakeTree(DataTable dtNodeSets, string parentColName, string rootValue, string indexColumn, string textColName, int i, ref DataTable outDt)
12     {
13         //每向下一层,多一个缩入单位
14         if (outDt == null || outDt.Columns.Count == 0)
15         {
16             outDt = dtNodeSets.Clone();
17         }
18         i++;
19         List<DataRow> drs = dtNodeSets.Select(parentColName + "=" + rootValue).ToList();
20         string strPading = ""; //缩入字符
21         //通过i来控制缩入字符的长度,我这里设定的是一个全角的空格
22         for (int j = 0; j < i; j++)
23             strPading += " "; //如果要增加缩入的长度,改成两个全角的空格就可以了
24         foreach (DataRow dr in drs)
25         {
26             dr[textColName] = strPading + "└─ " + dr[textColName].ToString();
27             outDt.ImportRow(dr);
28             MakeTree(dtNodeSets, parentColName, dr[indexColumn].ToString(), indexColumn, textColName, i, ref outDt);
29         }
30         //递归结束,要回到上一层,所以缩入量减少一个单位
31         i--;
32     }

 

最后的绑定后的效果如下:

 

posted @ 2024-06-08 13:45  猫狼  阅读(4)  评论(0编辑  收藏  举报