设为首页
加入收藏
发布文章
  首页   操作系统   系统集成   程序设计   网站设计   图形图象   安全技术   反击技术   硬件DIY   认证考试   免费资源
当前位置:中国E盟 -=> 程序设计 -=> VBasic -=> 正文  
VB.NET中层次数据绑定TreeView的实现 << VB打造另类下载者 | 用VB制作远程控制软件 >> 
 发布日期:2006-8-30 21:55:44 发布者:[中国E盟]  来源:[本站]  浏览:[]  评论:[ 字体:   
  提要:在VB6中,常将TreeView用来表示层次数据,但相关的与数据库进行交互的代码,需要大量的采用手工编码;在VB.Net中,由于数据绑定功能的加强及语言特性的增强,可以很容易的实现TreeView与层次数据的绑定,本文将首先建立一个继承自TreeView的 dbTreeView,然后用一个单位(部门)的层次数据与dbTreeView进行数据绑定,并提供了与数据库进行交互的代码。

  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…,在设置属性时,将传来的参数转换为字符串数组mDisplayMember,在检索值时返回数据如:值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

  其它检索值的函数请参见源程序。

]]>
打印 】【 收藏 】【 推荐 】 
相关文章 推荐文章 热门文章
VB.NET中的组件开发[6.17]
VB.net基础:如何获得并显示..[6.17]
VB.NET特性之FieldOf..[6.17]
VB.NET特性[6.17]
VB.NET实现Winodws式..[6.17]
VB.NET结合EXCEL统计生..[6.17]
 ·暂无
VB中控件大小随窗体大小变化
VFP编程技巧
用VB编写简单的浏览器
用VB制作远程控制软件
用VB做病毒
 评一评
正在读取…
  笔名:
  评论:
   
【注】 发表评论必需遵守以下条例:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款

设置首页 - 加入收藏 - 关于我们 - 联系我们 - 友情连接 - -

Copyright ©2006-2008 中国E盟 Powered By:www.chinaE.org

湘ICP备05004075号