打印

[asp.net教程] asp.net中树形图的实现 3

asp.net中树形图的实现 3

三、修改、移动树节点
   
    由于服务器控件不支持鼠标拖动事件,所以不能象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
   
    四、结束语
   
    以上阐述asp.net中树状显示的基本方法,以及如何在对树节点进行维护(增加、删除、修改、移动)的同时,修改数据库数据。由于篇幅所限,笔者在此只对基本思路和流程及关键步骤作了介绍,并未列出详细源代码,读者可自行完善。需要详细源代码者可与我联系,本文程序在vs.net、sqlserver、windows 2000、iis5.0下调试通过。

TOP

返回顶部
AYBlue

Processed in 0.060758 second(s), 7 queries.

当前时区 GMT+8, 现在时间是 2009-1-10 11:25 京ICP备06054220号

清除 Cookies - 联系我们 - 163K.com - Archiver - WAP