
VB.NET中层次数据绑定TreeView的实现
发布时间:2006-08-30 17:04:34 来源:博客园 网友评论 0 条
提要:在VB6中,常将TreeView用来表示层次数据,但相关的与数据库进行交互的代码,需要大量的采用手工编码;在VB.Net中,由于数据绑定功能的加强及语言特性的增强,可以很容易的实现TreeView与层次数据的绑定,本文将首先建立一个继承自TreeView的 dbTreeView,然后用一个单位(部门)的层次数据与dbTreeView进行数据绑定,并提供了与数据库进行交互的代码。
1、从层次数据的表达方式开始
在本例中,部门表(department)中有五个字段,如下表:
2、继承自TreeNode的myTreeNode
在myTreeNode中,新增了三个属性,如下表:
在Init事件中,根据传入的四个参数,设置这三个属性和Text属性。
3、将dbTreeView绑定到数据源
后四个属性对应myTreeNode的value,text,pid,cptr。
相关代码如下:
设置DisplayMember属性的格式如:字段1;字段2;字段3…
,在设置属性时,将传来的参数转换为字符串数组mDisplayMember,在检索值时返回数据如:值1 值2 值3.…
其它检索值的函数请参见源程序。
1、从层次数据的表达方式开始
在本例中,部门表(department)中有五个字段,如下表:
| 字段名 | 字段 | 类型说明 |
| ID | 自动编号 | Key |
| Code | String | 编码 |
| Name | String | 名称 |
| PID | Int | 父结点的ID |
| CPtr | boolean | 是否有子结点 |
2、继承自TreeNode的myTreeNode
在myTreeNode中,新增了三个属性,如下表:
| 属性名 | 类型 | 说明 |
| Value | Object | Key |
| PID | Object | 父结点的ID |
| CPtr | Boolean | 是否有子结点 |
在Init事件中,根据传入的四个参数,设置这三个属性和Text属性。
3、将dbTreeView绑定到数据源
| 属性名 | 类型 | 说明 |
| Datasource | dataview | dbTreeVIew的数据源使用dataview,而不是object |
| Value | Member | string值成员(数据源[dataview]的列名) |
| Display | Member | string显示(在Text中)成员 |
| Pid | Member | string父ID成员 |
| CPtr | Member | string是否有子结点 |
后四个属性对应myTreeNode的value,text,pid,cptr。
相关代码如下:
| Protected Property DataSource() As Object Get Return mDataView End Get Set(ByVal Value As Object) If Value Is Nothing Then Else mDataView = Value cm = CType(Me.BindingContext(mDataView), CurrencyManager) UpdateTreeView() End If End Set End Property Protected Property PidMember() As String Get Return mPidMember End Get Set(ByVal Value As String) mPidMember = Value End Set End Property Protected Property DisplayMember() As String Get Return Join(mDisplayMember, SplitChar) End Get Set(ByVal Value As String) mDisplayMember = Split(Value, SplitChar) End Set End Property '注意,这几个属性都是保护成员,必须在Init事件中设置: Public Sub Init(ByVal dispmember As String, ByVal valuemember As String, ByVal pidmember As String, ByVal cptrmember As String, ByVal datasource As DataView) Me.ValueMember = valuemember Me.DisplayMember = dispmember Me.PidMember = pidmember Me.CPtrMember = cptrmember Me.DataSource = datasource '取value最大值,新增时将value+1,保证关健值唯一。 Me.mDataView.Sort = Me.ValueMember Me.m_MaxID = Me.GetValue(Me.mDataView.Count - 1) End Sub |
设置DisplayMember属性的格式如:字段1;字段2;字段3…
| Protected Overridable Function GetDisplay(ByVal Index As Integer) As Object Dim i As Integer Dim temp As String = "" For i = 0 To mDisplayMember.Length - 1 temp = temp & IIf(i > 0, LinkChar, "") & mDataView(Index)(mDisplayMember(i)) Next Return temp End Function |
其它检索值的函数请参见源程序。
全站资源
- 微软官方入门教程19:轻松掌握Vista系统的快
- 微软2008大冲击,预借Vista SP1力促Vista市
- 在收件箱中获得 Windows Vista 的最新更新
- 微软官方Vista入门教程全集19篇(Vista学院
- Windows Vista 的成功将势不可挡
- 快快抛弃Vista,拥抱XP SP3!你觉得呢?
- 浅谈Vista系统关闭虚拟内存与使用内存盘加速
- 嘿嘿,按下键盘上面的三个键,马上让你的Vi
- Windows Vista的盗版率只有Windows XP的一半
- 3DMark和PCMark Vantage新版将只支持Vista系
阅读排行
- 通过实例学VB—创建简单的个人通讯录
- 如何编写高质量的VB代码
- 在VB的ListView控件中动态加载记录
- 用VB备份和恢复SQL Server数据库的方法
- 利用VB学做“黑客”程序
- 掌握VB中的ADO数据对象编程
- 将程序加入启动组
- VB程序中用ADO对象动态创建数据库和表
- VB与Excel2000实现复杂报表打印
- 六天学会Visual Basic数据库编程
最新技术文档
- VB中数据集合对象的应用
- VB6.0实例学习--使用右键菜单的例子
- VBScript 遍历表单元素 简化数据操作代码
- VB.NET中层次数据绑定TreeView的实现
- 将程序加入启动组
- VB.NET使用OracleTransaction处理事务
- VBScript教程第三课 VBScript数据类型
- VBScript教程 第四课 VBScript变量
- VBScript教程第五课 VBScript常数
- VBScript教程第六课 VBScript运算符
专题教程
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
- Picasa中文版_Picasa教程 专题:清除流氓软件
- Firefox专题 seo搜索引擎优化专区
- 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
