由于接触2005的时间不长,很多控件都不知道怎么使用,哎就像现在的这个treeview控件,突然要用到却慌了手脚,经过2天的搜索资料终于有大概的了解了@下面提供下我的做法:
1.先来提提我的需求吧!由于是要操作两张数据库表的,一张是Company的资料(当作根节点---根据公司不同显示的其他节点就不一样),一张是Dept的资料(用来显示部门----重点就在存在嵌套)
Company的字段
co_id co_name co_ename
1 ***公司 A
2 YYY公司 Y
3 SSS公司 S
Dept
dp_id | co_id | dp_name | dp_ename | dp_level | dp_up_level |
1 | 1 | 资讯部 | IT | 1 | 0 |
2 | 1 | 财务部 | FA | 1 | 0 |
3 | 2 | 资讯部 | IT | 1 | 0 |
4 | 2 | 网络系统部 | ITNT | 2 | 3 |
5 | 2 | ERP | ERP | 2 | 3 |
6 | 2 | 办公室自动化 | OA | 3 | 4 |
7 | 2 | 开发技术课 | DT | 3 | 4 |
8 | 1 | 办公室自动化 | OA | 3 | 1 |
9 | 1 | 成本会计 | Costing | 3 | 2 |
2.操作方式
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
bid = Request("co_id")--------从选择的相关页面传递来的信息
Dim dv As DataView = drv("select * from 表名 where co_id= " & bid)----查找出该表的信息
Dim datav As DataRowView
For Each datav In dv
Dim tn As TreeNode = New TreeNode----定义treeview中的根节点
tn.Text = datav("co_name").ToString-----节点显示的信息
tn.Value = datav("co_id").ToString----------对应该节点的ID
tn.Expanded = True---------------------------默认自动展开
TreeView1.Nodes.Add(tn)------------------添加到treeview中(一定要的哦!)
addchildnode(tn)--------------------------------自定义的递归函数
Next
End If
End Sub
Private Sub addchildnode(ByVal tn As TreeNode)
Dim dv As DataView = drv("select * from dept表 where dp_level=1 and dp_status=1 and co_id='" & bid & "'")---------需要根据第几层显示那些信息
Dim datav As DataRowView
For Each datav In dv
Dim ctn As TreeNode = New TreeNode
ctn.Text = datav("dp_name").ToString
ctn.Value = datav("dp_id").ToString
tn.ChildNodes.Add(ctn)
addSchildnode(ctn)--------------------------利用跟这个相同的方式只是把dp_level=2这样下去改,其实也许可以写在同一个函数的只是没有时间好好去整理了
Next
End Sub