文档章节

打造DropDownList,TreeView,ListBox无限极分类目录树

深圳大道
 深圳大道
发布于 2016/12/29 15:38
字数 920
阅读 6
收藏 0
#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(), 18, true), parentRow[value].ToString());
            items.Add(newItem);
            DataRow[] rows = dt.Select(parentid + "=" + newItem.Value);
            for (int i = 0; i < rows.Length - 1; i++)
                CreateLevelDropDownAssistant(dt, ref   items, rows[i], curHeader.Replace("┣", "┃").Replace("┗", "┣") + "┣", text, value, parentid);

            if (rows.Length > 0)
                CreateLevelDropDownAssistant(dt, ref   items, rows[rows.Length - 1], 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(), 18, true), parentRow[value].ToString());
            items.Add(newItem);
            DataRow[] rows = dt.Select(parentid + "=" + newItem.Value);
            for (int i = 0; i < rows.Length - 1; i++)
                CreateLevelListBoxAssistant(dt, ref   items, rows[i], curHeader.Replace("┣", "┃").Replace("┗", "┣") + "┣", text, value, parentid);

            if (rows.Length > 0)
                CreateLevelListBoxAssistant(dt, ref   items, rows[rows.Length - 1], curHeader.Replace("┣", "┃").Replace("┗", "┣") + "┗", text, value, parentid);
        }
        #endregion

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/7998590

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
在GridView内访问特定控件

本文我将为你演示如何访问GridView中的特定控件。我们会看到怎样去访问TextBox控件,DropDownList控件以及ListBox控件。 添加控件到GridView: 你可以简单地使用 选项在GridView控件中增加不...

晨曦之光
2012/03/09
102
0
保持dropdownlist选中值

RowDataBound事件 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { int i; for (i = 0; i < GridView1.Rows.Count; i++) { if (e.Row.RowType == DataCont......

晨曦之光
2012/03/09
183
0
DataBind数据核心

作者:飞刀 这一节主要是要讲DataBind,这个在ASP.net中是很重要的东东,几乎所有的控件都需要它来控制数据的操作。也可以说是ASP.net的数据核心。 我们先来看一个简单的例子: <% @ Page La...

晨曦之光
2012/03/09
75
0
ASP.NET MVC的Model元数据与Model模板:将”ListControl”引入ASP.NET MVC

我们不仅可以创建相应的模板来根据Model元数据控制种类型的数据在UI界面上的呈现方法,还可以通过一些扩展来控制Model元数据本身。在某些情况下通过这两者的结合往往可以解决很多特殊数据的呈...

长平狐
2012/09/04
1K
0
DropDownList问题,帮帮忙,大虾

@北落 你好,想跟你请教个问题:有个表格,第一个tr有DropDownList,是为了修改下面全部DropDownList的,下面的tr也有DropDownList,最左边是checkbox ,现在想选中最左边的几项checkbox,修...

钟颖
2012/11/20
90
2

没有更多内容

加载失败,请刷新页面

加载更多

一、docker 入坑(win10和Ubuntu 安装)

前言 终究还是绕不过去了,要学的知识真的是太多了,好在我们还有时间,docker 之前只闻其声,不曾真正的接触过,现在docker 越来越火,很多公司也都开始使用了。所以对于我们程序员而言,又...

quellanan2
28分钟前
4
0
AutoCompleteTextView

小技巧按菜单键 当菜单打开之前会调用onMenuOpened(int featereId,Menu menu),可以重写这个方法,弹出对话框或者Popmenu 再布局中添加控件AutoCompleteTextView. <AutoCompleteTextVie...

逆天游云
32分钟前
4
0
谷歌软件商店:推出5美元会员 可用数百个软件

腾讯科技讯,谷歌和苹果是全球两大智能手机操作系统的运营者,两家公司旗下分别拥有占据行业垄断地位的谷歌软件商店和苹果软件商店。据外媒最新消息,手机软件商店的商业模式正在发生一些变化...

linuxCool
54分钟前
3
0
RocketMQ 多副本前置篇:初探raft协议

Raft协议是分布式领域解决一致性的又一著名协议,主要包含Leader选举、日志复制两个部分。 温馨提示: 本文根据raft官方给出的raft动画进行学习,其动画展示地址:http://thesecretlivesofda...

中间件兴趣圈
54分钟前
3
0
elasticsearch 6.8.0 添加认证

1. 修改elasticsearch-6.8.0/config/elasticsearch.yml 最后添加一行:xpack.security.enabled: true 2. 初始化用户和密码 ./bin/elasticsearch-setup-passwords interactive 我这里初始化为......

coord
56分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部