[csharp] view plaincopyprint?
#region DropDownList无限递归显示层次关系
/// <summary>
/// 创建无限分级下拉列表框
/// </summary>
/// <param name="ddlst">下拉控件</param>
/// <param name="dt">源DataTable</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
public static void CreateLevelDropDown(DropDownList ddlst, DataTable dt, string text, string value, string parentid)
{
ArrayList allItems = new ArrayList();
DataRow[] rows = dt.Select(parentid + "=0");
foreach (DataRow row in rows)
CreateLevelDropDownAssistant(dt, ref allItems, row, string.Empty, text, value, parentid);
ListItem[] items = new ListItem[allItems.Count];
allItems.CopyTo(items);
ddlst.Items.AddRange(items);
} /// <summary>
/// 递归绑定子节点
/// </summary>
/// <param name="dt">源DataTable</param>
/// <param name="items">数组</param>
/// <param name="parentRow">当前节点</param>
/// <param name="curHeader">前缀</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
private static void CreateLevelDropDownAssistant(DataTable dt, ref ArrayList items, DataRow parentRow, string curHeader, string text, string value, string parentid)
{
ListItem newItem = new ListItem(curHeader + Until.CutString(parentRow[text].ToString(), , true), parentRow[value].ToString());
items.Add(newItem);
DataRow[] rows = dt.Select(parentid + "=" + newItem.Value);
for (int i = ; i < rows.Length - ; i++)
CreateLevelDropDownAssistant(dt, ref items, rows[i], curHeader.Replace("┣", "┃").Replace("┗", "┣") + "┣", text, value, parentid); if (rows.Length > )
CreateLevelDropDownAssistant(dt, ref items, rows[rows.Length - ], curHeader.Replace("┣", "┃").Replace("┗", "┣") + "┗", text, value, parentid);
} #endregion #region TreeView 无限递归显示层次关系目录树
/// <summary>
/// 创建无限分级目录树TreeView
/// </summary>
/// <param name="treeview">TreeView空间</param>
/// <param name="dt">数据源DataTable</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
public static void CreateLevelTreeView(TreeView treeview, DataTable dt, string text, string value, string parentid)
{
DataView dv = dt.DefaultView;
dv.RowFilter = parentid + "=0";
foreach (DataRowView drv in dv)
{
TreeNode node = new TreeNode();
node.Text = drv[text].ToString();
node.Value = drv[value].ToString();
node.Expanded = false;
treeview.Nodes.Add(node);
CreatTreeViewChildNode(dv, node, text, value, parentid);
}
} /// <summary>
/// 递归绑定子节点
/// </summary>
/// <param name="dv">源DataView</param>
/// <param name="parentNode">当前节点</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
private static void CreatTreeViewChildNode(DataView dv, TreeNode parentNode, string text, string value, string parentid)
{
dv.RowFilter = parentid + "=" + parentNode.Value;
foreach (DataRowView row in dv)
{
TreeNode replyNode = new TreeNode();
replyNode.Text = row[text].ToString();
replyNode.Value = row[value].ToString();
replyNode.Expanded = false;
parentNode.ChildNodes.Add(replyNode);
CreatTreeViewChildNode(dv, replyNode, text, value, parentid);
}
} /// <summary>
/// 创建无限分级目录树TreeView
/// </summary>
/// <param name="treeview">TreeView空间</param>
/// <param name="dt">数据源DataTable</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="url">url字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
public static void CreateLevelTreeView(TreeView treeview, DataTable dt, string text, string value, string url, string parentid)
{
DataView dv = dt.DefaultView;
dv.RowFilter = parentid + "=0";
foreach (DataRowView drv in dv)
{
TreeNode node = new TreeNode();
node.Text = drv[text].ToString();
node.Value = drv[value].ToString();
node.NavigateUrl = drv[url].ToString();
node.Expanded = false;
treeview.Nodes.Add(node);
CreatTreeViewChildNode(dv, node, text, value, url, parentid);
}
} /// <summary>
/// 递归绑定子节点
/// </summary>
/// <param name="dv">源DataView</param>
/// <param name="parentNode">当前节点</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="url">url字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
private static void CreatTreeViewChildNode(DataView dv, TreeNode parentNode, string text, string value, string url, string parentid)
{
dv.RowFilter = parentid + "=" + parentNode.Value;
foreach (DataRowView row in dv)
{
TreeNode replyNode = new TreeNode();
replyNode.Text = row[text].ToString();
replyNode.Value = row[value].ToString();
replyNode.NavigateUrl = row[url].ToString();
replyNode.Expanded = false;
parentNode.ChildNodes.Add(replyNode);
CreatTreeViewChildNode(dv, replyNode, text, value, url, parentid);
}
}
#endregion #region 创建无限分级ListBox
/// <summary>
/// 创建无限分级ListBox
/// </summary>
/// <param name="ddlst">ListBox控件</param>
/// <param name="dt">源DataTable</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
public static void CreateLevelListBox(ListBox ddlst, DataTable dt, string text, string value, string parentid)
{
ArrayList allItems = new ArrayList();
DataRow[] rows = dt.Select(parentid + "=0");
foreach (DataRow row in rows)
CreateLevelListBoxAssistant(dt, ref allItems, row, string.Empty, text, value, parentid);
ListItem[] items = new ListItem[allItems.Count];
allItems.CopyTo(items);
ddlst.Items.AddRange(items);
} /// <summary>
/// 递归绑定子节点
/// </summary>
/// <param name="dt">源DataTable</param>
/// <param name="items">数组</param>
/// <param name="parentRow">当前节点</param>
/// <param name="curHeader">前缀</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
private static void CreateLevelListBoxAssistant(DataTable dt, ref ArrayList items, DataRow parentRow, string curHeader, string text, string value, string parentid)
{
ListItem newItem = new ListItem(curHeader + Until.CutString(parentRow[text].ToString(), , true), parentRow[value].ToString());
items.Add(newItem);
DataRow[] rows = dt.Select(parentid + "=" + newItem.Value);
for (int i = ; i < rows.Length - ; i++)
CreateLevelListBoxAssistant(dt, ref items, rows[i], curHeader.Replace("┣", "┃").Replace("┗", "┣") + "┣", text, value, parentid); if (rows.Length > )
CreateLevelListBoxAssistant(dt, ref items, rows[rows.Length - ], curHeader.Replace("┣", "┃").Replace("┗", "┣") + "┗", text, value, parentid);
}
#endregion

原文地址:http://blog.csdn.net/smartsmile2012/article/details/7998590

转:打造DropDownList,TreeView,ListBox无限极分类目录树的更多相关文章

  1. C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现之方法二:加入缓存机制

    在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...

  2. C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现

    今天做一个管理后台菜单,想着要用无限极分类,记得园子里还是什么地方见过这种写法,可今天找了半天也没找到,没办法静下心来自己写了: 首先创建节点类(我给它取名:AdminUserTree): /// & ...

  3. 自定义TREEVIEW UL无限极嵌套

    背景:做一个多级图片分类管理,当然要用到TreeView,在asp.net中已经提供了此服务器控件,参照效果,自定义一个简单可控性高的就当做练手吧! 效果:如图,小图标 折叠 展开    ico-tr ...

  4. WPF—TreeView无限极绑定集合形成树结构

    1.如图所示:绑定树效果图 2.前台Xaml代码: <Window x:Class="WpfTest.MainWindow" xmlns="http://schem ...

  5. [No0000D1]WPF—TreeView无限极绑定集合形成树结构

    1.如图所示:绑定树效果图 2.前台Xaml代码: <Window x:Class="WpfTest.MainWindow" xmlns="http://schem ...

  6. yii框架无限极分类的做法

    用yii框架做了一个无限极分类,主要的数组转换都是粘贴的别人的代码,但还是不要脸的写出来,方便以后自己看 用的是递归,不是path路径 控制器: protected function subtree( ...

  7. php无限极分类以及递归(thinkphp)

    php无限极分类: 无限极分类重点在于表的设计: 1在model中: class CatModel extends Model{ protected $cat = array(); public fu ...

  8. js实现无限极分类

    转载注明出处!!! 转载注明出处!!! 转载注明出处!!! 因为要实现部门通讯录,后台传来的数据是直接从数据库里拿的部门表,所以没有层级分类,只有parentId表示从属关系,所以分类的事情就交给我来 ...

  9. PHP无限极分类

      当你学习php无限极分类的时候,大家都觉得一个字“难”我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱, ...

随机推荐

  1. OpenGL超级宝典第5版&&基础渲染

    1.OpenGL查询拓展机制是否被支持 gltools函数库: int gltIsExtSupported(const char *extension) { #ifndef OPENGL_ES GLi ...

  2. 多线程下OpenCV操作的问题

    问题:在OpenCV中,使用cvCaptureFromAVI打开一个视频文件后,并使用cvReleaseCapture释放关闭它后.再开启一个线程使用cvCaptureFromAVI打开一个视频文件, ...

  3. 关于javascript模式一书中var white = new Array(256).join(“ ”)

    直接进入正题 var white = new Array(256).join(" ") 运行后,我们会发现white.length的长度是255,这个是为什么呢?书上没有给出解答, ...

  4. [Hive - LanguageManual] GroupBy

    Group By Syntax Simple Examples Select statement and group by clause Advanced Features Multi-Group-B ...

  5. hbase使用-java操作

      .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courie ...

  6. 迁移web.py项目至git@osc的项目演示平台

    1. 开启演示平台 选择WSGI,输入应用名称,即是演示网页的网址. 2. web.py代码迁移 将Python的site-packages目录下的web文件夹复制到代码目录下,与网页程序在同一个文件 ...

  7. Cocos2d-x 对于中文的支持-----iconv库

    Cocos2d-x 对于中文的支持-----iconv库 转自:http://momowing.diandian.com/post/2013-01-16/40047183777 Jetion: 我们在 ...

  8. urllib2中自定义opener

    正常用Python抓取网页信息,需要用到urllib2,调用urllib2.urlopen(url),可以获得response 反馈信息,再用response.read()即可获得页面的源码. 最简单 ...

  9. My97DatePicker的calendar.js的反混淆

    eval(string)函数 <script> eval(function(p, a, c, k, e, d) { p = 'function p(){console.log(" ...

  10. Quality Center11初始化失败

    打开start_a.jsp页面总是闪退,原因如下: 初始化失败因为证书签名过期了.把IE选项里证书检查的三项勾掉就好了(检查发行商的证书是否吊销.检查服务器证书吊销.检查已下载的程序的签名)