树开下拉列表数据源生成
改自这位兄台的一段代码
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 }
最后的绑定后的效果如下: