假定LV1 是BOM表,LV2 是我们复制(即选择)的对象,那么处理步骤如下:
1、通过listview属性可以获得LV2当前被选择节点的属性(text\tag\key,一般使用key,可以考虑3个值都传回来)
2、通过listview属性可以获得LV1的被选择节点的属性,同理
3、通过存储过程或者代码去做递归,将LV2的节点以及节点的所有子节点内容写入数据库
4、重新获取LV1当前节点在数据库里的属性,重新加载该节点下的内容,不需要刷新整个LV1
tv1是目标,tv2是你要添加的,如果在不同的窗体,请自行修改代码.。代码如下
Private Sub Command1_Click()
For i = 1 To TV2.Nodes.Count
TV1.Nodes.Add TV1.SelectedItem.Key, tvwChild, TV1.SelectedItem.Key & "_" & TV2.Nodes(i).Key, TV1.SelectedItem.Text & "_" & TV2.Nodes(i).Text, 0, 0
Next
End Sub
没看出你的程序问题在哪,要注意的是节点text属性可以有重复的,但是key属性是不能有重复的,所以key的选择一定要有规律,我这里采用的是选定节点的key加上原节点的key做为新增节点的key,这样就可以确保key不会出错了。