TreeView无限极分类绑定(从数据库读取数据源)

TreeView这个控件其实我本来不怎么会用到,今天有一个项目要用到,而且是无限极的分类数据绑定,于是就根据自己以前写过的代码别写出了这个无限极分类的例子,呵呵希望能够对大家有所帮助,本人尽量把注释写的详细一些把,因为有的时候搜问题到别人的博客,写的代码完全看不懂,每个人写代码可能都有一定的习惯,所以一定要多写一些注释让别人看懂!

首先说一下我的数据库结构

Pid                主键自动增长

PartName       分类名称

ParentId        父级ID

相信大家一定都会很熟悉吧,这是无限极分类比较常用的一种设计思路!好了接下来看代码吧,自己认为这个还是很强大的,使用了递归的操作,大大减少了代码量!

        /// <summary>  
        
/// 控件绑定父节点 
        
/// </summary>  
        private void TreeViewBind()
        {
            DataSet ds 
= pbll.GetList("");   //数据源读取所有数据
            DataView dv = ds.Tables[0].DefaultView;
            dv.RowFilter 
= "ParentId=0";   //筛选ParentId=0为顶级分类
            TreeView1.ShowCheckBoxes = TreeNodeTypes.All;
            
foreach (DataRowView drv in dv)
            {
                TreeNode node 
= new TreeNode();
                node.Text 
= drv["PartName"].ToString();
                node.Value 
= drv["Pid"].ToString();
                node.Expanded 
= false;
                TreeView1.Nodes.Add(node);
                AddReplies(dv, node);
            }
        }
        
/// <summary>  
        
/// 递归绑定子节点  
        
/// </summary>  
        
/// <param name="dv"></param>  
        
/// <param name="node"></param>  
        private void AddReplies(DataView dv, TreeNode node)
        {
            dv.RowFilter 
= "ParentId='" + node.Value + "'";
            
foreach (DataRowView row in dv)
            {
                TreeNode replyNode 
= new TreeNode();
                replyNode.Text 
= row["PartName"].ToString();
                replyNode.Value 
= row["Pid"].ToString();
                replyNode.Expanded 
= false;
                node.ChildNodes.Add(replyNode);
                AddReplies(dv, replyNode);
            }
        }

  好了就是这些了,有不明白的地方可以留言,更多精品免费源码尽在天天源码论坛(www.ttyuanma.com)

转载于:https://www.cnblogs.com/tangxueyang/archive/2011/07/13/2105725.html

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

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

相关文章

为何把牛奶倒入大海

汤姆是生活在米国乌有城城郊的一位奶牛场主&#xff0c;不知何故&#xff0c;方圆数百里&#xff0c;只有这一家奶牛场。汤姆的奶牛场有2000头奶牛&#xff0c;每月产奶2000吨&#xff0c;这牛奶供应给乌有城的市民和周边的农民。牛奶售价是每吨500美元&#xff0c;每吨牛奶的生…

软件工程 软件设计 步骤_好的软件设计特点 软件工程

软件工程 软件设计 步骤For good quality software to be produced, the software design must also be of good quality. Now, the matter of concern is how the quality of good software design is measured? This is done by observing certain factors in software desi…

android游戏黑屏,第五人格游戏进不去黑屏解决办法

小编今天给各位玩家朋友们带来的是第五人格游戏进不去黑屏解决办法&#xff0c;很多的玩家朋友们在第五人格更新后都出现了黑屏、游戏无法进入等情况&#xff0c;这应该怎么办呢&#xff1f;小编把解决方法给大家整理在了下方&#xff0c;感兴趣的小伙伴们快来跟小编一起往下看…

交换输出

描述 输入n(n<100)个数&#xff0c;找出其中最小的数&#xff0c;将它与最前面的数交换后输出这些数。(如果这个第一个数就是最小的数&#xff0c;则保持原样输出&#xff0c;如果最小的数有相同的按照前面的交换) 输入 输入数据有多组&#xff0c;每组占一行&#xff0c…

线性表----顺序表

线性表的定义 线性表是具有相同数据类型的n个数据元素的有限序列&#xff0c; 逻辑特性 除第一个元素外&#xff0c;每个元素只有一个前驱&#xff0c;除最后一个元素外&#xff0c;每个元素都有一个后继 物理结构 线性表的存储结构有顺序存储结构和链式存储结构&#xff…

python各种语言间时间的转化

一 基本知识millisecond 毫秒microsecond 微秒 nanosecond 纳秒1秒1000毫秒 1毫秒1000微秒 1微秒1000纳秒二 perlperl中可以使用time或localtime来获得时间&#xff0c;time返回从1970年1月1日0点的秒数&#xff0c;localtime返回当前时间的字符串表示&#xff0c;或者年月日等…

javascript小技巧

事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode event.shiftKey event.altKey event.ctrlKey 事件返回值 event.returnValue 鼠标位置 event.x event.…

树、二叉树、二叉搜索树_检查二叉树是否为BST(二叉搜索树)

树、二叉树、二叉搜索树Description: 描述&#xff1a; This article describes how to check whether a given tree is BST or not? This problem came in coding round of Microsoft. 本文介绍如何检查给定的树是否是BST &#xff1f; 这个问题来自微软的编码回合。 Probl…

兄弟郊游问题

描述 兄弟俩骑车郊游&#xff0c;弟弟先出发&#xff0c;每分钟X米&#xff0c;M分钟后&#xff0c;哥哥带一条狗出发。以每分钟Y米的速度去追弟弟&#xff0c;而狗则以每分钟Z米的速度向弟弟跑去&#xff0c;追上弟弟后又立即返回&#xff0c;直到哥哥追上弟弟时&#xff0c;…

栈溢出利用-----jmp esp

通过jmp esp利用栈溢出&#xff0c;首先我们要找出jmp esp 的地址&#xff0c;因为系统不同&#xff0c;通用jmp esp的地址可能不同&#xff0c;下面的代码是找出jmp esp的地址的&#xff1a; #include<windows.h> #include<iostream.h>#include<tchar.h> i…

android 队列上传图片,话说android端七牛图片上传

七牛图片上传业务流程如下图(这是官方的图)&#xff1a;由上图可知&#xff0c;要想实现图片上传&#xff0c;是要三端进行交互的(我刚刚开始以为只要七牛服务器跟客户端交互就行)接下来步骤如下&#xff1a;1、首先肯定是要有一个七牛的账号&#xff0c;并创建一个空间2、客户…

在.NET中得到计算机硬件信息的一些功能

得到显示器分辨率 Dim X As Short System.Windows.Forms.Screen.PrimaryScreen.Bounds.WidthDim Y As Short System.Windows.Forms.Screen.PrimaryScreen.Bounds.HeightMsgBox("您的显示器分辨率是&#xff1a;" & X & " X " & Y) 得到特殊文…

GridView 利用AspNetPager 分页时的自动编号

GridView 利用AspNetPager 分页时的自动编号 <%# (this.WillisPager1.CurrentPageIndex-1) * this.WillisPager1.PageSize Container.DataItemIndex 1%> 转载于:https://www.cnblogs.com/waren168/archive/2011/07/18/2109305.html

bst 删除节点_C ++程序查找具有N个节点的BST数量(加泰罗尼亚编号)

bst 删除节点Problem statement: C program to find number of binary search trees with n nodes. 问题陈述&#xff1a; C 程序查找具有n个节点的二进制搜索树的数量。 Input format: single integer n 输入格式&#xff1a;单整数n Constraints: 0<n<15 约束&#x…

线性表----链式表

定义 线性表的链式存储又称单链表&#xff0c;它是指通过任意的存储单元来存储线性表的数据。注意此时的数据在物理地址上不在连续&#xff0c;内存是动态分配的&#xff0c;而且数据是存放在结点中&#xff0c;结点组成链表&#xff0c;每个节点分为数据域和指针域&#xff0…

奋斗的小蜗牛

描述 传说中能站在金字塔顶的只有两种动物&#xff0c;一种是鹰&#xff0c;一种是蜗牛。一只小蜗牛听了这个传说后&#xff0c;大受鼓舞&#xff0c;立志要爬上金字塔。为了实现自己的梦想&#xff0c;蜗牛找到了老鹰,老鹰告诉它金字塔高H米&#xff0c;小蜗牛知道一个白天自…

android intent实验,Android开发课程实验报告③ intent的使用

Android开发课程实验报告author&#xff1a;065实验四&#xff1a;intent实验报告目录实验目的初学移动应用公开发中的Android开发&#xff0c;实验四的主要内容为intent的使用&#xff0c;通过这一次实验&#xff0c;掌握基本的intent使用方法。具体实验分析实验第一步&#x…

[职场生存]细节和感觉[一]

zhengyun 200701 刚刚进入软件行业的时候&#xff0c;我特别喜欢问那些我眼中的强人一个问题&#xff1a;“怎么让自己比别人更快更强?”那时候真的是感觉“一万年太久&#xff0c;只争朝夕”。 下面挑出其中我认为很重要的两点和大家分享。这两点适用于技术人员乃至于不同行业…

程序开发基础学习四(boost::signal2 函数学习)

在游戏编程中&#xff0c;新的策划需求总是在迭代不停。。。。。。&#xff0c;对于游戏程序员肯定深有感触吧&#xff0c;遇到这种情况咱只能小小的抱怨下&#xff0c;活还得干。尤其是遇到耦合到很多类的时候&#xff0c;要是直接实现不加抽象的话&#xff0c;那咱的代码就要…

array.tolist_在Python中使用array.tolist()将数组转换为列表

array.tolistGiven an array with some elements and we have to convert them to the list using array.tolist() in Python. 给定一个包含一些元素的数组&#xff0c;我们必须使用Python中的array.tolist()将它们转换为列表。 创建一个数组 (Creating an array) To create a…