代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
CSharp
】
不用treeview控件生成漂亮的树型结构
作者:
CSDN
/ 发布于
2012/1/11
/
988
项目要求采用自己的模板驱动和UI结构致使不能使用任何ASP.NET自带控件。 今天要给无限分类生成树形结构,我参考了网上的一个算法 据说是PHPCMS用的生成树类。
/// /// 通用的树型类,可以生成任何树型结构 /// public class CateTreeView { IList lsCate = new List(); //初始化数组 string[] icons = new string[] { "│", "├", "└" }; //修饰符号 string htmlret = ""; string nbsp = " "; public CateTreeView(IList ls) { lsCate = ls; htmlret = ""; } public CategoryInfo getOne(int id) { foreach (CategoryInfo m in lsCate) { if (m.cateid == id) { return m; } } return null; } /// /// 得到父级数组 /// /// /// public IList get_parent(int myid) { IList lsnew = new List(); CategoryInfo m = getOne(myid); if (m == null) return lsnew; int pid = m.parentid; if (pid == 0) return lsnew; pid = getOne(pid).parentid; foreach (CategoryInfo mcate in lsCate) { if (mcate.parentid == pid) { lsnew.Add(mcate); } } return lsnew; } /// /// 得到子级分类 /// /// /// public IList get_child(int myid) { IList lsnew = new List(); foreach (CategoryInfo mcate in lsCate) { if (mcate.parentid == myid) { lsnew.Add(mcate); } } return lsnew; } /// /// 得到树型结构 /// /// /// /// /// /// /// public string get_tree(int myid, string str, int sid, string adds, string str_group) { int number = 1; IList child = get_child(myid); if (child.Count > 0) { int total = child.Count; foreach (CategoryInfo m in child) { string j = "", k = ""; if (number == total) { j += icons[2]; } else { j += icons[1]; k = adds != "" ? icons[0] : ""; } string spacer = adds != "" ? adds + j : ""; string selected = m.cateid == sid ? "selected" : ""; string tempstr = ""; if (m.parentid == 0 && str_group != "") //? "\$nstr = \"$str_group\";" : "\$nstr = \"$str\";"; { tempstr = str_group; } else { tempstr = str; } tempstr = tempstr.Replace("$id", m.cateid.ToString()); tempstr = tempstr.Replace("$parentid", m.parentid.ToString()); tempstr = tempstr.Replace("$select", selected); tempstr = tempstr.Replace("$spacer", spacer); tempstr = tempstr.Replace("$name", m.catename); tempstr = tempstr.Replace("$modelid", m.modelid.ToString()); htmlret += tempstr; string bspstr = nbsp; get_tree(m.cateid, str, sid, adds + k + bspstr, str_group); number++; //$this->ret .= $nstr; //$nbsp = $this->nbsp; //$this->get_tree($id, $str, $sid, $adds.$k.$nbsp,$str_group); //$number++; } } return htmlret; //return $this->ret; } /// /// 同上一类方法,jquery treeview 风格,可伸缩样式(需要treeview插件支持) /// /// /// /// /// /// /// /// /// /// HTML public string get_treeview(int myid, string effected_id, string str, string str2, int showlevel, string style, int currentlevel, bool recursion) { IList child = get_child(myid); string effected = "id=\"" + effected_id + "\""; string placeholder = " "; if (!recursion) htmlret += " + style + "\">"; foreach (CategoryInfo m in child) { IList child2 = get_child(m.cateid); string folder = ""; <a>//@extract($a</a>); if (showlevel > 0 && showlevel == currentlevel && (child2.Count > 0)) folder = "hasChildren"; //如设置显示层级模式@2011.07.01 string floder_status = ((folder != "") ? " class=\"" + folder + "\"" : ""); htmlret += recursion ? " + m.cateid + "\">" : " + m.cateid + "\">"; recursion = false; if (child2.Count > 0) { string nstr = str2; //eval("\$nstr = \"$str2\";"); string tempstr = str2; tempstr = tempstr.Replace("$id", m.cateid.ToString()); tempstr = tempstr.Replace("$parentid", m.parentid.ToString()); //tempstr = tempstr.Replace("$select", selected); //tempstr = tempstr.Replace("$spacer", spacer); tempstr = tempstr.Replace("$name", m.catename); tempstr = tempstr.Replace("$modelid", m.modelid.ToString()); htmlret += tempstr; if (showlevel == 0 || (showlevel > 0 && showlevel > currentlevel)) { get_treeview(m.cateid, effected_id, str, str2, showlevel, style, currentlevel + 1, true); } else if (showlevel > 0 && showlevel == currentlevel) { htmlret += placeholder; } } else { string nstr = str; string tempstr = str; tempstr = tempstr.Replace("$id", m.cateid.ToString()); tempstr = tempstr.Replace("$parentid", m.parentid.ToString()); //tempstr = tempstr.Replace("$select", selected); //tempstr = tempstr.Replace("$spacer", spacer); tempstr = tempstr.Replace("$name", m.catename); tempstr = tempstr.Replace("$modelid", m.modelid.ToString()); htmlret += tempstr; //str += nstr; } htmlret += recursion ? " " : " "; } if (!recursion)htmlret += ""; return htmlret; } }
试试其它关键字
树型结构
同语言下
.
文件IO 操作类库
.
Check图片类型[JPEG(.jpg 、.jpeg),TIF,GIF,BMP,PNG,P
.
机器名和IP取得(IPV4 IPV6)
.
Tiff转换Bitmap
.
linqHelper
.
MadieHelper.cs
.
RegHelper.cs
.
如果关闭一个窗体后激活另一个窗体的事件或方法
.
创建日志通用类
.
串口辅助开发类
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
CSDN
贡献的其它代码
(
27
)
.
xml操作类
.
完全无组件,不用调用Excel.exe 导出数据到Excel
.
DropDownList手动构造一个下拉树形
.
判断是否低于IE6的版本
.
javascript 鼠标拖拉画图
.
取汉字首字母
.
字符串格式化通用类
.
mssql海量高效分页存储过程
.
.net 获取远程IP 得到省市
.
javascript 模仿windows拖动 封装类
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3