treeview动态增删的例子

qq5181688 2010-08-07 05:41:47
vb.net中.....的treeview如何绑定数据库动态显示。。。并且能动态增删节点并写回数据库........本人使用...VS2008+access数据库。。。。
注:是在WEB下面。
...全文
156 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq5181688 2010-09-09
  • 打赏
  • 举报
回复
问题自己解决。
代码留给后人分享:
Private bodyUrl As String = ""
'页面转向,页面变量能在页面内保留,类似ViewState
Private tblClassInfo As New DataTable()
'储存读入的数据
'Private classes As New Classes()

Private Sub Bind()
Dim rootStr As String = "物品信息"
Dim rootNode As New TreeNode(rootStr)
rootNode.Value = "-1"
'rootNode.Target = "bodyFrame"
'rootNode.NavigateUrl = "body.aspx"
PopulateTreeView(0, rootNode)
Me.mytree.Nodes.Add(rootNode)
End Sub

Private Sub PopulateTreeView(ByVal parentId As Integer, ByVal parentNode As TreeNode)
Dim dv As DataView = wp_class.GetClass("parentId=" + parentId.ToString()).DefaultView
For Each drv As DataRowView In dv
Dim myNode As New TreeNode(drv("className").ToString())
myNode.Expanded = False
myNode.Value = drv("classId").ToString()
'myNode.Target = "bodyFrame"
'myNode.NavigateUrl = "body.aspx?classId=" + drv("classId").ToString()
parentNode.ChildNodes.Add(myNode)
PopulateTreeView(Convert.ToInt32(drv("classId").ToString()), myNode)
Next
End Sub

' <summary>
' 取得页面跳转地址
' </summary>
' <returns></returns>
Public Function GetBodyUrl() As String
Return bodyUrl
End Function
' <summary>
' 增加同级
' </summary>
' <param name="sender"></param>
' <param name="e"></param>

Protected Sub cmd_tj_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmd_tj.Click
If mytree.SelectedNode IsNot Nothing Then
lblTitle.Text = "增加同级项"
tree_sj = 1
cmd_save.Enabled = True
txtName.Focus()
Else
Page.ClientScript.RegisterStartupScript(Me.[GetType](), "show", "alert('请选择类别!');;", True)
End If

End Sub
' <summary>
' 增加子级
' </summary>
' <param name="sender"></param>
' <param name="e"></param>
Protected Sub cmd_next_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmd_next.Click
If mytree.SelectedNode IsNot Nothing Then
lblTitle.Text = "增加子级项"
tree_sj = 2
cmd_save.Enabled = True
txtName.Focus()
Else
Page.ClientScript.RegisterStartupScript(Me.[GetType](), "show", "alert('请选择类别!');;", True)
End If
End Sub
'编辑
Protected Sub cmd_edit_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmd_edit.Click
If mytree.SelectedValue IsNot Nothing Then
tree_sj = 3
Dim dt As DataTable = wp_class.GetByClassId(Convert.ToInt32((mytree.SelectedValue).ToString()))
lblTitle.Text = "编辑"
txtName.Text = dt.Rows(0)("className").ToString()
txtdescr.Text = dt.Rows(0)("classDescrip").ToString()
cmd_save.Enabled = True
txtName.Focus()
'btAdd.Text = "修改"
End If
End Sub
' <summary>
' 删除
' </summary>
' <param name="sender"></param>
' <param name="e"></param>
Protected Sub cmd_delete_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmd_delete.Click
If mytree.SelectedNode IsNot Nothing Then
If mytree.SelectedNode.Value = "-1" Then
Page.ClientScript.RegisterStartupScript(Me.[GetType](), "show", "alert('根结点不能删除');", True)
Return
End If
If Not wp_class.HasChild(Convert.ToInt32(mytree.SelectedValue)) Then
'先把同级重新排序
Dim dt As DataTable = wp_class.GetByClassId(Convert.ToInt32(mytree.SelectedValue))
wp_class.UpdateSort(Convert.ToInt32(dt.Rows(0)("sortId").ToString()), Convert.ToInt32(dt.Rows(0)("parentId").ToString()))
wp_class.UpdateChildNum(Convert.ToInt32(dt.Rows(0)("parentId").ToString()), False)
'再删除
wp_class.DeleteClass(Convert.ToInt32(mytree.SelectedValue))
Response.Redirect("tree.aspx")
Else
Page.ClientScript.RegisterStartupScript(Me.[GetType](), "show", "alert('请先删除子级!');;", True)
End If
Else
Page.ClientScript.RegisterStartupScript(Me.[GetType](), "show", "alert('请选择类别!');;", True)
End If
End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Bind()
cmd_delete.Enabled = False
cmd_edit.Enabled = False
cmd_save.Enabled = False
cmd_tj.Enabled = False
cmd_delete.Attributes.Add("onclick", userdelete)
cmd_up.Visible = False
cmd_down.Visible = False
End If
End Sub

Protected Sub mytree_SelectedNodeChanged(ByVal sender As Object, ByVal e As EventArgs) Handles mytree.SelectedNodeChanged
If mytree.SelectedValue = "-1" Then
cmd_delete.Enabled = False
cmd_edit.Enabled = False
cmd_save.Enabled = False
cmd_tj.Enabled = False
Else
cmd_tj.Enabled = True
cmd_delete.Enabled = True
cmd_edit.Enabled = True
cmd_next.Enabled = True
End If
lblTitle.Text = mytree.SelectedNode.Text
End Sub

'*****************************************************************

'Private Sub add_Bind()
' If Request.QueryString("type") IsNot Nothing Then
' MsgBox("增加同级")
' '说明是增加操作
' If Request.QueryString("type") = "add" Then
' lblTitle.Text = "增加同级项"
' Else
' lblTitle.Text = "增加子级项"
' End If
' Else
' MsgBox("编辑")

' If mytree.SelectedValue IsNot Nothing Then
' MsgBox("修改")
' Dim dt As DataTable = wp_class.GetByClassId(Convert.ToInt32((mytree.SelectedValue).ToString()))
' lblTitle.Text = "编辑"
' txtName.Text = dt.Rows(0)("className").ToString()
' txtdescr.Text = dt.Rows(0)("classDescrip").ToString()
' 'btAdd.Text = "修改"
' End If
' End If
'End Sub
'Protected Sub btAdd_Click(ByVal sender As Object, ByVal e As EventArgs)
' Try
' Add()
' Catch ex As Exception
' Page.ClientScript.RegisterStartupScript(Me.[GetType](), "show", "alert('" + ex.ToString() & "');", True)
' End Try
'End Sub
Private Sub Add()
If mytree.SelectedValue IsNot Nothing Then
If tree_sj = 1 Then
'增加同级
Dim dt As DataTable = wp_class.GetParent(Convert.ToInt32((mytree.SelectedValue).ToString()))
If dt.Rows.Count > 0 Then
'如果不是顶级tr
'父级
'最大排序号
wp_class.AddClass(txtName.Text.Trim(), txtdescr.Text, Convert.ToInt32(dt.Rows(0)("classId").ToString()), Convert.ToInt32(dt.Rows(0)("childNum").ToString()), Convert.ToInt32(dt.Rows(0)("depth").ToString()) + 1)
Else
'增加顶级
Dim maxId As String = wp_class.GetMaxSortId(0)
If maxId = "-1" Then
maxId = "0"
End If
wp_class.AddClass(txtName.Text.Trim(), txtdescr.Text, 0, Convert.ToInt32(maxId) + 1, 0)
End If
ElseIf tree_sj = 2 Then
'增加子级
If mytree.SelectedValue <> "-1" Then
Dim dt As DataTable = wp_class.GetByClassId(Convert.ToInt32((mytree.SelectedValue).ToString()))
If dt.Rows.Count > 0 Then
'父级
'最大排序号,是父级孩子数量
wp_class.AddClass(txtName.Text.Trim(), txtdescr.Text, Convert.ToInt32(dt.Rows(0)("classId").ToString()), Convert.ToInt32(dt.Rows(0)("childNum").ToString()), Convert.ToInt32(dt.Rows(0)("depth").ToString()) + 1)
wp_class.UpdateChildNum(Convert.ToInt32((mytree.SelectedValue).ToString()), True)
End If
Else
'增加第一个结点,或者增加最顶级结点。
'找到顶级最大排序号,加一。
wp_class.AddClass(txtName.Text.Trim(), txtdescr.Text, 0, 1, 0)
End If
End If
ElseIf tree_sj = 3 Then
If mytree.SelectedValue IsNot Nothing Then
'修改
wp_class.UpdateClass(txtName.Text.Trim(), txtdescr.Text, Convert.ToInt32((mytree.SelectedValue).ToString()))
End If
End If
'刷新类别树
mytree.Nodes.Clear()
'Response.Redirect("tree.aspx")
Call Bind()
'ltlJs.Text = "window.parent.location.reload();"
'.leftFrame
End Sub

Protected Sub cmd_save_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmd_save.Click
Try
Add()
Catch ex As Exception
Page.ClientScript.RegisterStartupScript(Me.[GetType](), "show", "alert('" + ex.ToString() & "');", True)
End Try
End Sub
hbhdlzq 2010-08-09
  • 打赏
  • 举报
回复
http://demos.devexpress.com/ASPxTreeListDemos/Editing/Modes.aspx

不用写代码就行。
whxxr 2010-08-09
  • 打赏
  • 举报
回复
删除节点, 本人试过好用.

if (目录节点== "0")
{
TreeView1.Nodes.Remove(TreeView1.SelectedNode);
}
else
{
TreeView1.SelectedNode.Parent.ChildNodes.RemoveAt(TreeView1.SelectedNode.Parent.ChildNodes.IndexOf(TreeView1.SelectedNode));
}
wwfgu00ing 2010-08-09
  • 打赏
  • 举报
回复
qq5181688 2010-08-09
  • 打赏
  • 举报
回复
没有人回答哦!难道没有人用过VB。NET做过
cjh200102 2010-08-08
  • 打赏
  • 举报
回复
跟进学习
qq5181688 2010-08-07
  • 打赏
  • 举报
回复
嘿嘿,要是会改,我就自己做出来了咧。
哈哈。。
脾气不坏 2010-08-07
  • 打赏
  • 举报
回复
那就自己改吧
反正也不算困难。。。。
qq5181688 2010-08-07
  • 打赏
  • 举报
回复
上面是C#的哟,我用的是VB.net咧。代码我用软件转换了。有些转换不过来。
SK_Aqi 2010-08-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyq11 的回复:]
http://topic.csdn.net/u/20100802/16/031c7556-401a-4178-b078-13f17694574a.html?79164
[/Quote]
up
qq5181688 2010-08-07
  • 打赏
  • 举报
回复
晕了的,我要详细的代码,不是说个这个就完了....显示的代码我都有.重要的是如何增删.回写数据库.
happy664618843 2010-08-07
  • 打赏
  • 举报
回复
foreach()
qq5181688 2010-08-07
  • 打赏
  • 举报
回复
网上找好多,根本没有实用的例子。
onlylikews 2010-08-07
  • 打赏
  • 举报
回复
经典的递归问题。
一、简介 通过这个课程带大家从零开发一款功能全面的后台管理系统,包括项目搭建、功能实现到最后的Linux系统部署全过程。本课程使用SpringMVC + Spring + Mybatis作为主体框架,使用AdminLTE作为前端框架,使用主流关系型数据库Mysql作为存储数据库,使用非关系型数据库Redis作为缓存数据库,并集成SpringSecuriy安全框架做权限的动态管理,集成Swagger2自动生成接口文档,集成Druid连接池进行SQL性能监控,集成ActiveMQ消息中间件进行异步解耦,提高性能。最后使用linux系统进行服务部署,并搭建nginx反向代理服务器提高网站性能。 二、学习目标 通过本课程的学习带大家掌握SSM框架的开发流程,并熟练使用SpringSecurity做为安全框架进行权限管理,整合相关优秀的开源框架进行功能开发。还在项目中带大家学习前端相关的Jquery、Bootstrap等知识。课程结束之后希望大家能做到独立进行开发项目的目的,增强解决问题的能力,具备功能落地实现的能力。 三、课程涉及知识点 SpringMVC源码分析Mybatis源码分析通用MapperMysql数据库Redis缓存实现ActiveMQ消息中间件SpringSecurity鉴权Swagger2接口文档生成自定义注解AOP切面编程自定义过滤器Logback日志整合Druid性能监控Linux系统Nginx反向代理Ajax异步请求技术Jquery基本使用AdminLTE前端框架Chart图表-线状图和饼状图百度地图定位城市BootStrap前端框架BootStrap-Table插件BootStrap-Treeview插件Markdown编辑器403、404、500错误页面配置数据库事务消息提示插件toastr.js图片上传插件bootstrap fileinput数字滚动效果pv/uv流量统计...四、课程部分内容截图如下 1、首页 2、菜单管理 3、图床管理 4、图标管理 5、留言反馈管理 6、druid监控 7、登录日志

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧