数据库中树形图的用法

作者&投稿:歧虎 (若有异议请与网页底部的电邮联系)
~

  数据库中树形图的用法的用法你知道吗?下面我就跟你们详细介绍下数据库中树形图的用法的用法,希望对你们有用。

  数据库中树形图的用法的用法如下:

  树形图用于显示按照树形结构进行组织的数据,其用途比较广泛,如计算机中的文件系统(Windows中的资源管理器)、企业或公司的组成结构等。我们知道在Windows下VB、PB、Delphi等工具提供了一个功能很强的树型控件TreeView,利用Treeview控件可以方便地开发树形图。然而在网页上实现树形图就不那么容易了,现在在asp.net中利用微软提供的Internet Explorer WebControls它使得网页上的树形图开发与在Windows下一样的方便,一样的功能强大,甚至更灵活。

  本文介绍用Internet Explorer WebControls开发树形图的方法,由于树形图结构较复杂,使用起来常不知如何下手。笔者结合最近刚为公司用ASP.NET编写的应用程序管理器这一具体实例,详细阐述在ASP.NET下如何将Internet Explorer WebControls的使用与数据库联系起来,实现数据分任意多层显示,方便地进行增加、修改、删除、移动操作。笔者希望通过对该实例的阐述,达到抛砖引玉的效果,与各位同仁相互交流,共同进步。

  Internet Explorer WebControls不在VS.NET的标准Server Control中,要到微软的站点上下载,下载地址是:

  http://msdn.microsoft.com/downloads/samples/internet/default.asp?url=/Downloads/samples/Internet/ASP_DOT_NET_ServerControls/WebControls/default.asp

  下载安装后第一次使用时,要右击工具箱Customize Toolbox…→.NET Framework Components中找到Micosoft.Web.UI.WebControls.Treeview后选中,这样Treeview控件就出现在工具箱中了。

  一、树的建立

  具体方法是:创建一个数据库,设计树图信息表TREE_INFO,包含NODEID、PARENTID、NODENAME、ADDErss、ICON字段,其它字段根据实际业务而定,节点名称NODENAME将在树型控件的节点上显示,NODEID字段保存节点的唯一标识号,PARENTID表示当前节点的父节点号,标识号组成了一个“链表”,记录了树上节点的结构。设计一个Web窗体其上放置TreeView控件。

  PRivate Sub CreateDataSet()’建立数据集

  Dim myConn As New SqlConnection()

  Dim myCmd As New SqlCommand("select NODEID,NODENAME,PARENTID,ADDRESS,ICON from Tree_info", myConn)

  Dim myDataAdapter As New SqlDataAdapter()

  myConn.ConnectionString = application("connectstring")

  myCmd.CommandText = ""

  myCmd.Connection = myConn

  myDataAdapter.SelectCommand = myCmd

  myDataAdapter.Fill(ds, "tree")

  End Sub

  建树的基本思路是:从根节点开始递归调用显示子树

  Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  CreateDataSet()

  intiTree(TreeView1.Nodes, 0)

  End Sub

  Private Sub intiTree(ByRef Nds As TreeNodeCollection, ByVal parentId As Integer)

  Dim dv As New DataView()

  Dim drv As DataRowView

  Dim tmpNd As TreeNode

  Dim intId As Integer

  dv.Table = ds.Tables("tree")

  dv.RowFilter = "PARENTID=’" & parentId & "’"

  For Each drv In dv

  tmpNd = New TreeNode()

  strId = drv("NODE_ID")

  tmpNd.ID = strId

  tmpNd.Text = drv("NODE_NAME ")

  tmpNd.ImageUrl = drv("ICON").ToString

  Nds.Add(tmpNd)

  intiTree(Nds(Nds.Count - 1).Nodes, intId)

  Next

  End Sub

  二、增加、删除树节点

  单纯在Treeview 上增加、删除、修改节点只需用Nodes属性的Add、 Remove、等方法即可,值得注意的地方是VS.NET中Treeview的Nodes集合与VS6.0中的区别,VS6.0中的是一个大的集合,而VS.NET中的是分层的每个Node下都有Nodes属性。增加、删除、修改树节点时与VS6.0相比有很大差别,特别是删除时。

  Private Sub ButAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButAdd.Click’在选定的节点下添加子节点

  Dim tmpNd As New TreeNode(), NdSel As TreeNode

  tmpNd.ID = GetNewId()

  NdSel = TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex)’选中的节点

  tmpNd.Text = "新节点"

  NdSel.Nodes.Add(tmpNd)

  Dim myRow As DataRow

  myRow = ds.Tables("tree").NewRow()

  myRow("NODE_NAME") = tmpNd.ID

  myRow("NODE_DESCRipT") = "新节点" & tmpNd.ID & "_" & NdSel.ID

  myRow("PARENT_NAME") = NdSel.ID

  ds.Tables("tree").Rows.Add(myRow)

  End Sub

  Private Sub ButDele_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButDele.Click’删除选中的节点

  Dim idx As String = TreeView1.SelectedNodeIndex()

  GetNdCol(idx).Remove(TreeView1.GetNodeFromIndex(idx))

  Dim dv As New DataView(), recNo As Integer

  dv.Table = ds.Tables("tree")

  dv.RowFilter= "NODEID=" & NdId

  dv.Delete(0)

  End Sub

  Private Function GetNdCol(ByVal idx As String) As TreeNodeCollection

  ‘获得选中节点的父节点的Nodes集合

  Dim cnt As Integer, i As Integer

  Dim tmpNds As TreeNodeCollection

  Dim idxs() As String

  idxs = Split(idx, ".")

  cnt = UBound(idxs)

  If cnt = 0 Then

  tmpNds = TreeView1.Nodes

  Else

  tmpNds = TreeView1.Nodes(CInt(idxs(0))).Nodes

  For i = 1 To cnt - 1

  tmpNds = tmpNds(CInt(idxs(i))).Nodes

  Next

  End If

  Return tmpNds

  End Function

  三、修改、移动树节点

  由于服务器控件不支持鼠标拖动事件,所以不能象Windows程序那样通过拖动移动节点,这里是通过选择父节点的方式。移动是通过在原位置删除,新位置添加实现的,要注意在删除时先保存节点信息。

  Private Sub TreeView1_SelectedIndexChange(ByVal sender As Object, ByVal e As Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs) Handles TreeView1.SelectedIndexChange

  Dim dv As New DataView()

  dv.Table = ds.Tables("tree")

  Dim tmpNd As TreeNode = TreeNdSel(e.OldNode), tmpNds As TreeNodeCollection

  dv.RowFilter= "NODEID=" & tmpNd.ID

  dv(0)("NODE_DESCRIPT") = Me.TextBox1.Text

  dv(0)("ADDRESS") = Me.TextBox2.Text

  dv(0)("TARGET") = Me.TextBox3.Text

  dv(0)("ICON") = Me.TextBox4.Text

  If dv(0)("PARENTID").ToString <> Me.DropDownList1.SelectedItem.Value Then

  ‘移动节点

  dv(0)("PARENT_NAME") = Me.DropDownList1.SelectedItem.Value

  If Me.DropDownList1.SelectedItem.Value = "ROOT" Then

  tmpNds = TreeView1.Nodes

  Else

  tmpNds = FromIdToNode(Me.DropDownList1.SelectedItem.Value, TreeView1.Nodes).Nodes’新的父节点的Nodes集合

  End If

  GetNdCol(e.OldNode).Remove(tmpNd)

  tmpNds.Add(tmpNd)

  End If

  tmpNd.Text = Me.TextBox1.Text

  tmpNd.ImageUrl = Me.TextBox4.Text

  tmpNd = TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex)

  dv.RowFilter= "NODEID=" & tmpNd.ID

  Me.TextBox1.Text = dv(0)("NODENAME").ToString

  Me.TextBox2.Text = dv(0)("ADDRESS").ToString

  Me.TextBox3.Text = dv(0)("TARGET").ToString

  Me.TextBox4.Text = dv(0)("ICON").ToString

  End Sub

  Private Function FromIdToNode(ByVal ID As String, ByVal Nds As TreeNodeCollection) As TreeNode

  ‘由关键字查找节点

  Dim i As Integer

  Dim tmpNd As TreeNode, tmpNd1 As TreeNode

  For Each tmpNd In Nds

  If tmpNd.ID = ID Then

  Return tmpNd

  Exit Function

  End If

  tmpNd1 = FromIdToNode(ID, tmpNd.Nodes)

  If Not (tmpNd1 Is Nothing) Then

  Return tmpNd1

  Exit Function

  End If

  Next

  Return Nothing

  End Function




数据库中树形图的用法
数据库中树形图的用法的用法如下: 树形图用于显示按照树形结构进行组织的数据,其用途比较广泛,如计算机中的文件系统(Windows中的资源管理器)、企业或公司的组成结构等。我们知道在Windows下VB、PB、Delphi等工具提供了一个功能很强的树型控件TreeView,利用Treeview控件可以方便地开发树形图。然而在网页上实现树形图就...

怎么将数据库中存的树转化为树形列表
1、邻接表(adjacency list model)2、预排序遍历树算法(modified preorder tree traversal algorithm)用一下的例子讨论这两种方法的差异:现有一棵树如下:邻接表模式:这种模式我们经常用到,很多的教程和书中也介绍过。我们通过给每个节点增加一个属性 parent 来表示这个节点的父节点从而将整个树状结构通过...

在电脑上怎么做树状图
1、打开制作软件,在绘图工具栏上,单击插入组织结构图或图示;2、在图示库中选择用于显示层次关系的第一种后,单击确定按钮后;3、点击方框,输入相关的内容,可在组织结构图工具栏上,单击插入形状;4、如果不满足于默认的效果,可以在组织结构图工具栏中,选择自动套用格式;5、在文本框下,插入相应...

数据库中有哪些索引,各有什么特点
首先,B树索引是最常见且广泛使用的数据库索引类型。它采用树形结构存储数据,能够保持数据的有序性,从而支持范围查询和高效的插入、删除操作。B树索引适用于大多数数据类型,特别是在需要进行排序和范围查找的场景中表现优异。例如,在一个包含大量用户信息的数据库中,通过B树索引可以快速查找到某个年龄范围...

数据库如何导出树状图
\/\/循环菜单树形数据 for (输出对象menuTree : resOrgList) { \/\/菜单级别为0,则是一级数据,根据实际情况判断可修改相关关联判断 if ("00".equals(menuTree.getOrgClass())) { trees.add(menuTree);for (输出对象 it : resOrgList) { \/\/找出一级菜单下面的所有二级菜单,并加入到list中去 ...

word怎样绘制树状图
在“绘图”工具栏上,单击“插入组织结构图或其他图示”,如图1所示,在接着出现的“图示库”中选择“用于显示层次关系”的第一种后,单击“确定”按钮后会出现一个层次结构图,如图2所示。这时,在方框中可以输入相关的内容了。如果要在某一个结构下增加分支时,先选中些结构,然后在“组织结构图”...

Delphi6中使用Treeview显示及修改数据库中树形结构表
1、查出父结点数据2、循环写入父结点(可以将各结点序号放入SelectedIndex来做临时存储)3、循环当前已写入的父结点,并根据SeletedIndex(父结点序号)来查出属于当前序号的子结点,有数据的话 再循环写入子结点4、按上述方式循环判断下级子结点就可以创建一个树形结构表了。 对于添加,删除等操作,也可以...

数据库中有哪些索引
首先,B树索引是最常见的数据库索引类型,其基于树形数据结构来组织和存储数据。B树索引能够保持数据有序,并支持快速的插入、删除和查找操作。在大多数关系型数据库中,如MySQL、Oracle和SQL Server,B树索引或其变种是默认的索引结构。例如,在MySQL的InnoDB存储引擎中,主键索引就是采用B+树结构。其次,...

word如何做树状图
示例操作步骤如下:1、首先打开word文档,然后在“插入”菜单中点击打开“SmartArt”选项。2、然后选择需要的树状图类型。3、然后就会生成一个树状图的样式。4、接着在上方格式菜单中,根据需要设置颜色样式、阴影效果。5、以及根据需要设置下级或其它版式。6、添加完成后输入文字即可。

树形图思维导图怎么做
添加次级主题:对于每个子主题,可以进一步添加次级主题,以便更详细地描述该子主题。这样,您的思维导图就会形成一个树状结构。描述每个主题:为每个主题添加简短的描述性文本,以便更好地理解该主题。连接主题:使用线条或箭头连接各个主题,以展示它们之间的关系。例如,可以使用横向线条连接同级主题,使用...

墨玉县15678486064: 求高人帮我分析spss分析中树形图的分析结果,附图上 -
侯奇人纤: excel表:整理一份excel数据表,第一列为材料或数据的名称,后几列为各项数值 导入数据:打开SPSS,点击File——Open——DATA, 选择已经编辑好的excel表 点击analyze——Classify——Hierarchical cluster analysis——数据导入variables,表头项导入label case by;选择Method 项,根据需要选择方法,点击Plots选择dendrogram(打对勾),其余各项根据自己需要选择要计算的统计量,点击ok即可.

墨玉县15678486064: Excel 请问怎么用Treemapper插件做树形图 -
侯奇人纤: 把包含这宏的文件另存为XLA模板文件 把这宏复制到公司每人电脑的以下目录 C:\Documents and Settings\cw047\Application Data\Microsoft\AddIns 再在公司的人里面的EXCEL菜单->工具->加载宏 在相对应的文件名上勾上就OK了

墨玉县15678486064: 求数据库树形结构图解
侯奇人纤: Purciew 表 PId 自增主键 PName 树形名称 ParentId 子节点 对应PId 这样可以无限级别 遍历的时候用递归

墨玉县15678486064: delphi7中的treeview控件 怎么读取数据中的数据来形成一歌树形图,比如编号占有两位的为父级,三位为子级 -
侯奇人纤: '编号如果是一个字段,你要想利用字段值的不同,来改变它的节点级别,想都别想,树形图没有这个功能,如果学校名称,年级,班,组,学生姓名是一张表的的话,生成的树形视图:学校名称是根节点,年级是次节点;班是节点三.组是节点...

墨玉县15678486064: 请写出下列树形图的前序遍历,中序遍历和后序遍历的顺序? -
侯奇人纤: 前序 ABDHIEJKCFLMGNO 中序 HDIBJEKALFMCNGO 后序 HIDJKEBLMFNOGCA

墨玉县15678486064: 某校有A、B两个餐厅,甲、乙、丙三名学生各自随机选择其中的一个餐厅用餐.(1)请用列表或画树形图的方法求甲、乙、丙三名学生在同一个餐厅用餐的概... -
侯奇人纤:[答案] (1)画树形图为: 共有8种等可能的结果数,其中甲、乙、丙三名学生在同一个餐厅用餐的结果数为2, 所以甲、乙、丙三名学生在同一个餐厅用餐的概率= 2 8= 2 4; (2)甲、乙、丙三名学生中至少有一人在B餐厅用餐的结果数为7, 所以甲、乙、丙三...

墨玉县15678486064: 如何使用echarts绘制树形图表 -
侯奇人纤: 在setoption之后添加这段代码:window.onresize = myChart.resize;

墨玉县15678486064: 求助...SQL数据库表Comm中的数据由字段ParentID构成如图的树状结构 -
侯奇人纤: select parentid from comm where parentid='b' or parentid in (select parentid from comm where parentid='b' )

墨玉县15678486064: excel树形图中,每个框如何添加超链接 急 -
侯奇人纤: 首先先打开表格,找到需要链接的关键字或者图片.选中表格中的文本框,右键选择最下面的超链接.之后它会跳出一个插入超链接的框框.上面有很多选项,有可以链接到同一个工作表的,也有可以链接到桌面或者其它地址的.如图想要链接到Sheet2,就选择文本档中的位置,然后选择Sheet2,再点击确定,确定就可以了.链接做好之后表格中的文字下面会出现一条下划线,鼠标左键单击该文字就会跳转到Sheet2了.如下图2.链接到表格中的其它工作薄也是同样的方法,如下图3就是链接到Sheet3中的效果.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网