树开下拉列表数据源生成

news/2025/1/21 4:52:37/文章来源:https://www.cnblogs.com/rovedog/p/18238576

改自这位兄台的一段代码

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     }

 

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/721819.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玄机应急响应-第二章

日志分析-apache日志分析 一,提交当天访问次数最多的IP,即黑客IP:129 ::16555 192.168.200.21 192.168.200.2115 192.168.200.381 192.168.200.48$ cat access.log.1|awk -F {print $1}|sort|uniq -cflag{192.168.200.2}二,黑客使用的浏览器指纹是什么,提交指纹的md5:12 …

C#异步编程是怎么回事(番外)

在上一篇通信协议碰到了多线程,阻塞、非阻塞、锁、信号量...,会碰到很多问题。因此我感觉很有必要研究多线程与异步编程。 首先以一个例子开始我说明一下这个例子。 这是一个演示异步编程的例子。输入job [name],在一个同步的Main方法中,以一发即忘的方式调用异步方法Start…

【日记】遇到了一个 “不愿睁眼看世界也没受过社会毒打” 的逆天群友(464 字)

正文今天坐在柜台玩了一天手机…… 手机都玩没电了快。下午在劝一个群友睁眼看世界,实在劝不动。他真的太逆天了,我不清楚这么高学历的人,怎么能说出这么天真的话。逆天又离谱。晚上的时间几乎全在做家务。平时晚上都是跳舞来着,没时间也不想动。意外地花了挺长时间。扫了地…

友链

Blogroll 友链愿我如星君如月,夜夜流光相皎洁。

Linux 中date命令

date主要用于显示日期,若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。 001、最基本的用法[root@PC1 test2]# date ## 输出日…

Linux 中date

date主要用于显示日期,若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。 001、最基本的用法[root@PC1 test2]# date ## 输出日…

类加载器

双亲委派机制类加载器中的核心方法 loadClass protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { synchronized (getClassLoadingLock(name)) { // First, check if the class has already been loaded Class<?&g…

IceRPC之依赖注入快乐的RPC

作者引言很高兴啊,我们来到了IceRPC之依赖注入>快乐的RPC,基础引导,打好基础,才能让自已不在迷茫,快乐的畅游世界。依赖注入和IceRPC了解 IceRPC (C#) 如何为依赖注入(DI)提供支持。DI作为可选功能 DI的第一条规则是:不要引入对DI的依赖。 IceRPC (C#) 将此规则放首要…

图床

表视图触发器本文来自博客园,作者:zhywyt,转载请注明原文链接:https://www.cnblogs.com/zhywyt/p/18238527

阅读习惯

本学期开始时我的阅读量大约在50小时左右,通过这一学期读电子书,我的阅读时长为200小时,大约增加了150小时,在这150小时中,我每天会抽出半个小时来读书,这其中包括课外书和娄老师推荐的书目,比方说《学会提问》、《批判性思维》,目前在书架上的书有四本,在每天坚持读书…

纯CSS+单个div实现抖音LOGO

纯CSS+单个div就能绘制抖音LOGO。 主要借助了两个伪元素实现了整体结构,借助了 drop-shadow 生成一层整体阴影。 drop-shadow 只能是单层阴影,所以另一层阴影需要多尝试。 contrast(150%) brightness(110%) 则可以增强图像的对比度和亮度,更贴近抖音LOGO的效果。纯CSS+单个d…

完美解决SqlServer2012启动报错(cannot find one or more components.Please reinstall the application。)

出现这问题的原因是,vs组件没有安装或被卸载,重新安装这个组件即可。微软官网下载忒麻烦,这里分享一下 我用夸克网盘分享了「vs shell2010安装文件.rar」链接:https://pan.quark.cn/s/0347cf062d65