VB.net 递归Treeview 怎么获取第N层的结点

问题描述

有两张表一张表A有NodeIDChildrenIDOrderNum另一张表B为NodeIDtypeNameA中childrenID与B中NodeID相对应A中Nodeid为0代表根节点一行中ChildrenID为8名字在B中显示为散货船A中第二行NodeID为8childrenID为9即为第二级节点名称为H2558A中第三行NodeID为9childrenID为10即为第三级节点名称为尾部机舱区域A中第四行NodeID为10childrenID为11即为第四级节点名称为10AA中第五行NodeID为11childrenID为12即为第五级节点名称为102问题对于这种递归的结构树我怎么获取第五级子节点在定位到第五级子节点时对子节点进行添加属性属性为102等的基本长宽高等基础数据并且将第五级上面四级的名称都能获取到程序代码如下结构树显示代码ImportsSystem.DataImportsSystem.Data.SqlClientPublicClass递归结构树'绑定根节点SubBindRoot()conn1.Close()conn1.Open()DimstrSQLAsStringDimadapterAsSqlDataAdapterDimcmdAsSqlCommandBuilderDimtableAsNewDataTable()DimMaterialInfAsNewDataSetstrSQL="SELECT*FROMF_ProductInfoNodeChildrenList"adapter=NewSqlDataAdapter(strSQL,conn1)cmd=NewSqlCommandBuilder(adapter)DimrowsAsDataRow()adapter.Fill(MaterialInf,"F_ProductInfoNodeChildrenList")table=MaterialInf.Tables(0)rows=table.[Select]("NodeID=0")'取根ForEachdRowAsDataRowInrowsDimrootNodeAsNewTreeNode()rootNode.Tag=dRowDimstrSQL1AsStringDimadapter1AsSqlDataAdapterDimcmd1AsSqlCommandBuilderDimtable1AsNewDataTable()DimMaterialInf1AsNewDataSetstrSQL1="SELECT*FROMF_ProductInfoNodeListwhereNodeID='"&dRow("ChildrenNodeID").ToString()&"'"adapter1=NewSqlDataAdapter(strSQL1,conn1)cmd1=NewSqlCommandBuilder(adapter1)adapter1.Fill(MaterialInf1,"F_ProductInfoNodeList")table1=MaterialInf1.Tables(0)rootNode.Text=table1.Rows(0).Item("Name").ToString()TreeView1.Nodes.Add(rootNode)Iftable1.Rows(0).Item("TypeID").ToString()=1ThenrootNode.ImageIndex=0rootNode.SelectedImageIndex=0ElserootNode.ImageIndex=1rootNode.SelectedImageIndex=1EndIfBindChildAreas(rootNode)NextEndSub'递归绑定子区域SubBindChildAreas(ByValfNodeAsTreeNode)'父节点IDDimstrSQLAsStringDimadapterAsSqlDataAdapterDimcmdAsSqlCommandBuilderDimtableAsNewDataTable()DimMaterialInfAsNewDataSetstrSQL="SELECT*FROMF_ProductInfoNodeChildrenList"adapter=NewSqlDataAdapter(strSQL,conn1)cmd=NewSqlCommandBuilder(adapter)DimrowsAsDataRow()adapter.Fill(MaterialInf,"F_ProductInfoNodeChildrenList")table=MaterialInf.Tables(0)rows=table.[Select]("NodeID="&fNode.Tag(1))'子区域Ifrows.Length=0Then'递归终止,区域不包含子区域时ReturnEndIfForEachdRowAsDataRowInrowsDimnodeAsNewTreeNode()node.Tag=dRowDimstrSQL1AsStringDimadapter1AsSqlDataAdapterDimcmd1AsSqlCommandBuilderDimtable1AsNewDataTable()DimMaterialInf1AsNewDataSetstrSQL1="SELECT*FROMF_ProductInfoNodeListwhereNodeID='"&dRow("ChildrenNodeID").ToString()&"'"adapter1=NewSqlDataAdapter(strSQL1,conn1)cmd1=NewSqlCommandBuilder(adapter1)adapter1.Fill(MaterialInf1,"F_ProductInfoNodeList")table1=MaterialInf1.Tables(0)node.Text=table1.Rows(0).Item("Name")'添加子节点fNode.Nodes.Add(node)'递归BindChildAreas(node)Iftable1.Rows(0).Item("TypeID")=1Thennode.ImageIndex=0node.SelectedImageIndex=0Elsenode.ImageIndex=1node.SelectedImageIndex=1EndIfNextEndSubPrivateSubTreeView1_AfterSelect(senderAsObject,eAsTreeViewEventArgs)HandlesTreeView1.AfterSelectTreeView1.ContextMenuStrip=ContextMenuStrip2EndSubPrivateSub结构树_Load(senderAsObject,eAsEventArgs)HandlesMyBase.LoadTreeView1.Nodes.Clear()TreeView1.ImageList=ImageList1BindRoot()EndSubPrivateSub刷新ToolStripMenuItem_Click(senderAsObject,eAsEventArgs)Handles刷新ToolStripMenuItem.ClickTreeView1.Nodes.Clear()TreeView1.ImageList=ImageList1BindRoot()EndSubPrivateSub增加ToolStripMenuItem_Click(senderAsObject,eAsEventArgs)Handles增加ToolStripMenuItem.Click递归添加.ShowDialog()EndSubEndClass

解决方案

解决方案二:

解决方案三:
if(TreeNode.Level==N)在SQL数据源中判断(CTE需要SQL2005及以上)参考例子E

时间: 2024-11-01 21:25:08

VB.net 递归Treeview 怎么获取第N层的结点的相关文章

vb.net的TreeView控件

一个TreeView(树型结构)控件是显示结点(Node)对象的等级体系结构,每个Node对象包含了一个标签和可选的点位图.TreeView控件通常用于显示文档头.索引中的条目.磁盘上的文件和目录或者可以显示为等级结构的各种其他信息.Windows资源管理器左侧部分就是一个典型的树结构.TreeView控件在工具箱中的图标如图所示: 1.TreeView在设计时设计好结点的组织结构 要建立如下图所示的树形结构可按以下步骤进行: (1)向窗体添加一个TreeView控件,名为TreeView1以及

请教VB.net常用控件获取值的问题

问题描述 请教vb.net中常用控件checkbox,checklistbox,listbox,listview,treeview,如何获取所选择的值,然后将值添加到数据库中,请提供简单代码,谢谢帮忙! 解决方案 解决方案二:checkbox.checklistbox定义变量当checkbox.value=True变量=1False变量=0listbox就取listbox.textlistview.treeview没用过解决方案三:CheckBox控件,放在一个Panel1里面:DimstrAs

编程- 悬赏20c币 vb用file控件获取一个文件并复制到指定文件夹

问题描述 悬赏20c币 vb用file控件获取一个文件并复制到指定文件夹 如题,用户使用时选取一个文件,然后自动复制到另一个已经指定好的文件夹,谢谢答的好的20c币 解决方案 求大神,求大神,谢谢谢谢谢 解决方案二: 用户选择好文件之后,点击确定,你在确定按钮的事件函数里使用filecopy函数直接复制文件http://baike.baidu.com/link?url=p0S_bFcHsJ1q8tk-CFCiaSGTak_K9xL0ZfjeEfmHM5K1PYrs9x0YwdI9cEvVFmfO

vs2010中vb 中的 treeview 控件

问题描述 vs2010中vb 中的 treeview 控件 如何确定当前所选的节点或子点,并在其下创建新的节点或子点? 最好能给我个完成例子.我初学者,谢谢各位大侠!!!! 解决方案 添加父节点 TreeView1.Nodes.Add(new TreeNode(reader[1].ToString(),reader[0].ToString())); using (SqlConnection mycon = new SqlConnection(sqlstr)) { mycon.Open(); Sq

treeview 节点-jquery生成treeview如何获取节点的id

问题描述 jquery生成treeview如何获取节点的id <script> $(function(){ var data=[{"id":"36","name":"u6d4bu8bd5u5206u7c7b","type":"product","pgid":"18"},{"id":"37",&qu

vb中2005中如何获取messbox的返回值(要详细介绍)顺便推荐学vb2005的教程,谢谢各位了!

问题描述 vb中2005中如何获取messbox的返回值(要详细介绍)顺便推荐学vb2005的教程,谢谢各位了! 解决方案 解决方案二:Result=MessageBox()Result=Msgbox()解决方案三:笨蛋方法:dimaasinteger=msgbox("笨蛋方法",1,"大笨蛋")ifa=1then...ifa=2then...

vb treeview-vb中treeview控件的使用

问题描述 vb中treeview控件的使用 在vb中,treeview控件与数据库连接出错.在左边点击treeview的子节点,在右边的文本框中不显示相应内容,这是为什么?望高手帮忙解答一下,有什么解决办法,我很着急要呢,谢谢啦!

[学习日记]VB图像处理之像素的获取和输出

VB图像处理之像素的获取和输出 作者:佚名 来源:InterNet 加入时间:2005-1-28 要处理一个图像,首先要获得该图像的像素值,而VB本身提供的PICTURE控件虽然可以打开很多类型的图片,但是它提供的那个POINT方法读取像素实在是太慢.而使用GetPixel这个API的速度也快不到哪里去,因为PIONT方法本身就是对于GetPixel的一个包装. 在VB中要快速获取一幅在PICTURE中打开的图像比较快速的方法是使用DIB方法,当然还有DDB方法,不过使用DDB方法还需要考虑不同

怎么得到treeview最深的node的深度?怎么控制treeview能够添加node的层?

问题描述 怎么得到treeview最深的node的深度?怎么控制treeview能够添加node的层? 怎么得到treeview最深的node的深度?怎么控制treeview能够添加node的层? 解决方案 treeView NODE DELETE