Winfrom TreeView 无限分级

public void AddTreeView(string ParentID, TreeNode pNode, DataSet set)
        {
            string strName = "N_Name";                  // 数据库名字字段
            string strID = "U_ID";                           // 数据库ID字段
            string strParentID = "N_PaterId";           // 数据库父级ID字段
            DataTable dt = set.Tables[0];
            DataView dvTree = new DataView(dt);   //添加数据源
            dvTree.RowFilter = "N_PaterId = ‘" + ParentID + "‘";  //过滤节点条件
            foreach (DataRowView Row in dvTree)
            {
                TreeNode Node = new TreeNode();
                if (pNode == null)
                {
                    Node.Text = Row[strName].ToString();
                    Node.Name = Row[strName].ToString();
                    Node.Tag = Row[strID].ToString();
                    Node.ImageIndex = 1;
                    this.treeView1.Nodes.Add(Node);
                    AddTree(Row[strID].ToString(), Node, set); //再次递归
                }
                else
                {
                    Node.Text = Row[strName].ToString();
                    Node.Name = Row[strName].ToString();
                    Node.Tag = Row[strID].ToString();
                    Node.ImageIndex = 1;
                    pNode.Nodes.Add(Node);
                    AddTree(Row[strID].ToString(), Node, set); //再次递归
                }
            }
        }

时间: 2024-10-11 22:46:36

Winfrom TreeView 无限分级的相关文章

无限分级和tree结构数据增删改【提供Demo下载】

无限分级 很多时候我们不确定等级关系的层级,这个时候就需要用到无限分级了. 说到无限分级,又要扯到递归调用了.(据说频繁递归是很耗性能的),在此我们需要先设计好表机构,用来存储无限分级的数据.当然,以下都是自己捣鼓的结果,非标准.谁有更好的设计望不吝啬赐教. 说来其实也简单,就是一个ID和父ID的关系. 以此类推,Id需要是唯一的,ParenId需要是Id列里面存在即可.这样我们就实现无限分级了,如果再加一列Sort排序就更完美了. jstree插件 官方地址:https://www.jstre

数据库无限分级(分类表)

在数据库中我们经常会做这样一件事:创建了一个分类表,再创建一个子分类,有多少级我们就习惯创建多少张表. 这样不仅耗费大量时间而且还会在操作表的时候陷入混乱,这里我介绍一种办法:无限分级. 通过这种方式,我们仅需要创建一张表就能将不管多少级分类全部放入. 首先我们理清一下思想,在这张表中我们要有个编号(ID),和一个父编号(ParentID) 我们在放入数据的时候就可以用ParentID去区别这个ID属于那个分级,而且通过这个ParentID,我们就可以实现无限分级,就是使用这个ID不断作为Par

采用左右值编码实现无限分级树形结构(转)

无限分级树形结构是在系统开发中很常见的,如下图 在之前实现这样的菜单一直是使用传统的方法,看数据表结构就一目了然 parent_id记录其直接父节点,组合树形结构的关键字段:parent_list记录其所有父节点,便于查询某个节点下所有子节点(一般使用MySQL的FIND_IN_SET函数),相对冗余.对于这种结构生成树形的关键算法:根据parent_id组合一个父子(直接关系)节点映射表,即 2 => array(3, 4), 3 => array(5),然后递归优先遍历每个节点的子节点.如

C# Winfrom Treeview树形结构使用

using System; using System.Data; using System.Drawing; using System.Windows.Forms; using System.Data.SqlClient; namespace TreeViewList { public partial class Form1 : Form { DataTable dt = new DataTable(); public Form1() { InitializeComponent(); } pri

Winfrom treeview 如何从多个数据表中获取数据动态生成

本文转载:http://www.cnblogs.com/VincentLuo/archive/2008/03/29/1128987.html 在 汪洋怡舟的这篇文章中[http://www.cnblogs.com/longren629/archive/2007/03/14/674633.html]只使用了一个数据表,效果如图2 我想使用多个表来生成动态的treeview,效果如图三,代码如下所示 在第二次与第三次的代码中,代码出现重复,中间只是改了表名.列名 多个表之间,是否也可以实现递归呢,不

无限分级

function getTree($items) {         foreach($items as $value){             $value['son'] =array();             $new_address[$value['id']] = $value;         }         foreach($new_address as &$value){             if($value['pid'] !=0){                 

无限分级Repeater递归实现:读取一次数据库,使用LINQ2SQL技术,支持排序&显示隐藏

预览效果图: Selenium 数据库结构: id(int)    classname(string)   parentid(int) sort(int用于显示与排序) 1 家居 0 1 2 家电 0 2 3 沙发 1 1 4 某...   3      1 ... 10   ...红色   4      1 注: parentid  父节点ID sort 用于隐藏或显示 兼排序功能 前台: <asp:Repeater ID="rep" runat="server&qu

采用左右值编码来存储无限分级树形结构

参考文档: https://blog.csdn.net/comiunknown/article/details/1586020 python实现: from app.cmdb.config import dbconfig, cmdbsql, modelconfig, balantsql from app.cmdb.utils.dbutil import MysqlConnect balant_connect = MysqlConnect(db_params=dbconfig.balant_db_

最佳数据库无限分级快速查找所有子节点的方法

场景我们基本设计的表是这样的 temp表 id, name, parent_id 当我们查某个节点的所有子节点的时候,我们需要递归查询 id = 4 select * from temp where parent_id = 4 ids = [5,9,25] select * from temp where parent_id in [5,9,25] 那么这种方法在层数达到一定层的时候势必带来性能问题,因为需要多次查询数据库,就算写存储过程,性能也是十分低下的. 快速查询方法如下: 改造表,添加c