asp.net中树形图的实现 2
二、增加、删除树节点
单纯在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