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); //再次递归
}
}
}
Winfrom TreeView 无限分级
时间: 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技术,支持排序&;amp;显示隐藏
预览效果图: 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