CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

请用过TREEVIEW的朋友指点一下

楼主qgqchile(qgq)2005-06-02 23:36:27 在 .NET技术 / VB.NET 提问

我现在需要做一个   树型结构   大概就是一个合同下有几个小合同   小合同又可生成别的合同   以此类推,开始我用HIERARGRID   控件做但效果不理想,要事先指定层数无法动态生成.  
  现在我想用TREEVIEW控件做这个东西,不知道哪位朋友有这方面的经验   如连接数据,   如何用TREEVIEW显示数据内容   以及如何写STORE   PROCEDURE    
  在这里先谢了 问题点数:20、回复次数:7Top

1 楼Snrmnm_sx(Ψ 踏雪无痕 Ω)回复于 2005-06-02 23:51:29 得分 20

Dim   Ds   As   New   DataSet  
          Dim   Tb   As   New   DataTable  
          'Dim   Ad   As   New   Microsoft.Data.Odbc.OdbcDataAdapter  
          Dim   ad   As   New   System.Data.OleDb.OleDbDataAdapter  
          Dim   Dwdm_Pub1   As   String  
          Dim   Row_Pub   As   Integer  
          Public   Data_Conn   As   New   System.Data.OleDb.OleDbConnection  
          Dim   Parent_P   As   TreeNode  
   
          Private   Sub   TreeView1_AfterSelect(ByVal   sender   As   System.Object,   ByVal   e   As   System.Windows.Forms.TreeViewEventArgs)   Handles   TreeView1.AfterSelect  
                  Dim   Text0,   F1   As   String  
                  Dim   i   As   Integer  
                  Try  
                          Parent_P   =   e.Node  
                          Text0   =   e.Node.Text  
                          If   Text0   <>   "根目录"   Then  
                                  i   =   InStrRev(Text0,   ")")  
                                  Text0   =   Mid(Text0,   2,   i   -   2)  
                                  i   =   0  
                                  Do   While   i   <   Tb.Rows.Count  
                                          If   Tb.Rows(i)("DWDM")   =   Text0   Then  
                                                  Row_Pub   =   i  
                                                  DWDM.Text   =   Tb.Rows(i)("DWDM")  
                                                  DWMC.Text   =   Tb.Rows(i)("DWMC")  
                                                  DWDZ.Text   =   Tb.Rows(i)("DWDZ")  
                                                  IPADD.Text   =   Tb.Rows(i)("IPADD")  
                                                  EMAIL.Text   =   Tb.Rows(i)("EMAIL")  
                                                  CZH.Text   =   Tb.Rows(i)("CZH")  
                                                  LXR.Text   =   Tb.Rows(i)("LXR")  
                                                  DHHM.Text   =   Tb.Rows(i)("DHHM")  
                                                  YZBM.Text   =   Tb.Rows(i)("YZBM")  
                                                  XX.Text   =   Tb.Rows(i)("XX")  
                                                  YB.Text   =   Tb.Rows(i)("YB")  
                                                  Dwdm_Pub1   =   DWDM.Text  
                                                  Button3.Enabled   =   True  
                                                  Button4.Enabled   =   True  
                                                  Button1.Enabled   =   False  
                                                  DWDM.Enabled   =   False  
                                          End   If  
                                          i   =   i   +   1  
                                  Loop  
                          Else  
                                  Dwdm_Pub1   =   ""  
                          End   If  
                  Catch   ex   As   Exception  
                          MsgBox(ex.Message,   MsgBoxStyle.Information,   "提示")  
                  End   Try  
   
          End   Sub  
   
          Private   Sub   Dwxx_Form_Load(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   MyBase.Load  
                  Dim   Str0   As   String  
                  Dim   k1   As   Integer  
                  Data_Conn.ConnectionString   =   "Jet   OLEDB:Database   Password=DWDD;Provider=Microsoft.Jet.OLEDB.4.0;Data   source=D:\DWDD.MDB"   ';password=DWDD"  
                  TreeView1.Nodes.Clear()  
                  Dim   newNode   As   TreeNode   =   New   TreeNode("根目录")  
                  Try  
                          Str0   =   "select   *   from   DWXX   order   by   LEN(DWDM)+DWDM"  
                          '                         Ad.SelectCommand   =   New   Microsoft.Data.Odbc.OdbcCommand(Str0,   Data_Conn)  
                          ad.SelectCommand   =   New   System.Data.oledb.OleDbCommand(Str0,   Data_Conn)  
                          Dim   Adc   As   System.Data.Oledb.OleDbCommandBuilder   =   New   System.Data.oledb.OleDbCommandBuilder(ad)  
                          ad.Fill(Ds,   "DWXX")  
                          Tb   =   Ds.Tables("DWXX")  
                          TreeView1.Nodes.Add(newNode)  
                          newNode.ExpandAll()  
                          k1   =   Dis_Tree(newNode)  
                          TreeView1.ExpandAll()  
                  Catch   ex   As   Exception  
                          MsgBox(ex.Message,   MsgBoxStyle.Information,   "提示")  
                  End   Try  
          End   Sub  
   
          Private   Sub   PrintRecursive(ByVal   n   As   TreeNode,   ByVal   Dm   As   String)  
                  Dim   Text1   As   String  
                  Dim   i   As   Integer  
                  Text1   =   n.Text  
                  If   Text1   =   "根目录"   Then  
                          Text1   =   ""  
                  Else  
                          i   =   InStrRev(Text1,   ")")  
                          Text1   =   Mid(Text1,   2,   i   -   2)  
                  End   If  
                  If   Text1   =   Dm   Then  
                          Parent_P   =   n  
                  Else  
                          Dim   aNode   As   TreeNode  
                          For   Each   aNode   In   n.Nodes  
                                  PrintRecursive(aNode,   Dm)  
                          Next  
                  End   If  
          End   Sub  
  Top

2 楼Snrmnm_sx(Ψ 踏雪无痕 Ω)回复于 2005-06-02 23:51:56 得分 0

接上楼的!    
  Private   Sub   CallRecursive(ByVal   Dm   As   String)  
                  Dim   n   As   TreeNode  
                  For   Each   n   In   TreeView1.Nodes  
                          PrintRecursive(n,   Dm)  
                  Next  
          End   Sub  
          Private   Function   Dis_Tree(ByVal   Node   As   TreeNode)   As   Integer  
                  Dim   L,   i,   j   As   Integer  
                  Dim   Dm0,   Dm1,   Text0   As   String  
                  Dim   Len0   As   Integer  
                  Dim   Newnode1   As   TreeNode  
                  L   =   0  
                  For   i   =   0   To   Tb.Rows.Count   -   1  
                          Dm0   =   Tb.Rows(i)("DWDM")  
                          Len0   =   Len(Tb.Rows(i)("DWDM"))  
                          If   Len0   =   L   +   2   Then  
                                  Text0   =   "("   +   Dm0   +   ")"   +   Tb.Rows(i)("DWMC")  
                                  Newnode1   =   New   TreeNode(Text0)  
                                  Node.Nodes.Add(Newnode1)  
                          Else  
                                  '查找父节点  
                                  Dm1   =   Mid(Dm0,   1,   Len0   -   2)  
                                  CallRecursive(Dm1)  
                                  Text0   =   "("   +   Dm0   +   ")"   +   Tb.Rows(i)("DWMC")  
                                  Newnode1   =   New   TreeNode(Text0)  
                                  Parent_P.Nodes.Add(Newnode1)  
                          End   If  
                  Next  
                  Dis_Tree   =   1  
          End   Function  
   
          Private   Sub   Button5_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Button5.Click  
                  Data_Conn.Close()  
                  Close()  
          End   Sub  
   
          Private   Sub   Button3_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Button3.Click  
                  Dim   Text0   As   String  
                  Tb.Rows(Row_Pub)("DWDM")   =   DWDM.Text  
                  Tb.Rows(Row_Pub)("DWMC")   =   Trim(DWMC.Text)  
                  Tb.Rows(Row_Pub)("DWDZ")   =   DWDZ.Text  
                  Tb.Rows(Row_Pub)("IPADD")   =   IPADD.Text  
                  Tb.Rows(Row_Pub)("EMAIL")   =   EMAIL.Text  
                  Tb.Rows(Row_Pub)("CZH")   =   CZH.Text  
                  Tb.Rows(Row_Pub)("LXR")   =   LXR.Text  
                  Tb.Rows(Row_Pub)("DHHM")   =   DHHM.Text  
                  Tb.Rows(Row_Pub)("YZBM")   =   YZBM.Text  
                  Tb.Rows(Row_Pub)("XX")   =   XX.Text  
                  Tb.Rows(Row_Pub)("YB")   =   YB.Text  
                  ad.Update(Ds,   "DWXX")  
                  Text0   =   "("   +   DWDM.Text   +   ")"   +   DWMC.Text  
                  TreeView1.SelectedNode.Text   =   Text0  
                  Button3.Enabled   =   False  
          End   Sub  
   
          Private   Sub   Button2_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Button2.Click  
                  'Tb.Rows(Row_Pub)("DWDM")   =   DWDM.Text  
                  DWMC.Text   =   ""  
                  DWDZ.Text   =   ""  
                  IPADD.Text   =   ""  
                  EMAIL.Text   =   ""  
                  CZH.Text   =   ""  
                  LXR.Text   =   ""  
                  DHHM.Text   =   ""  
                  YZBM.Text   =   ""  
                  XX.Text   =   ""  
                  YB.Text   =   ""  
                  DWDM.Enabled   =   True  
                  Button1.Enabled   =   True  
          End   Sub  
   
          Private   Sub   Button1_Click_1(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Button1.Click  
                  Dim   Dm0,   Mc0,   Text0   As   String  
                  Dim   Len0,   i   As   Integer  
                  Dm0   =   DWDM.Text  
                  Mc0   =   Trim(DWMC.Text)  
                  Len0   =   Len(Dm0)  
                  If   Len0   <>   Len(Dwdm_Pub1)   +   2   Or   Len0   >   10   Then  
                          MsgBox("子节点的代码长度应为父节点代码长度加2且总长度不能大于10!",   MsgBoxStyle.Information,   "提示")  
                          Exit   Sub  
                  End   If  
                  If   Mid(Dm0,   1,   Len0   -   2)   <>   Dwdm_Pub1   Then  
                          MsgBox("你新增的单位信息不是本单位的下级单位信息!",   MsgBoxStyle.Information,   "提示")  
                          Exit   Sub  
                  End   If  
                  For   i   =   0   To   Tb.Rows.Count   -   1  
                          If   Tb.Rows(i)("DWDM")   =   Dm0   Or   Tb.Rows(i)("DWMC")   =   Mc0   Then  
                                  MsgBox("此单位信息已经输入!",   MsgBoxStyle.Information,   "提示")  
                                  Exit   Sub  
                          End   If  
                  Next  
                  Try  
                          Dim   Row1   As   DataRow  
                          Dim   Newnode1   As   TreeNode  
                          Row1   =   Tb.NewRow  
                          Row1("DWDM")   =   DWDM.Text  
                          Row1("DWMC")   =   Trim(DWMC.Text)  
                          Row1("DWDZ")   =   DWDZ.Text  
                          Row1("IPADD")   =   IPADD.Text  
                          Row1("EMAIL")   =   EMAIL.Text  
                          Row1("CZH")   =   CZH.Text  
                          Row1("LXR")   =   LXR.Text  
                          Row1("DHHM")   =   DHHM.Text  
                          Row1("YZBM")   =   YZBM.Text  
                          Row1("XX")   =   XX.Text  
                          Row1("YB")   =   YB.Text  
                          Tb.Rows.Add(Row1)  
                          ad.Update(Ds,   "DWXX")  
                          Text0   =   "("   +   DWDM.Text   +   ")"   +   DWMC.Text  
                          Newnode1   =   New   TreeNode(Text0)  
                          Parent_P.Nodes.Add(Newnode1)  
                  Catch   ex   As   Exception  
                          MsgBox(ex.Message,   MsgBoxStyle.Information,   "提示")  
                  End   Try  
                  Button1.Enabled   =   False  
          End   Sub  
   
          Private   Sub   Button4_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Button4.Click  
                  Dim   i   As   Integer  
                  Dim   Text0   As   String  
                  Dim   Parent0   As   TreeNode  
                  Try  
                          Text0   =   Parent_P.Text  
                          If   Text0   =   "根目录"   Then  
                                  Exit   Sub  
                          End   If  
                          If   Parent_P.GetNodeCount(True)   >   0   Then  
                                  MsgBox("本节点有子节点不能删除!",   MsgBoxStyle.Information,   "提示")  
                                  Exit   Sub  
                          End   If  
                          If   MsgBox("是否确定要删除节点:"   +   Text0,   MsgBoxStyle.YesNo,   "提示")   =   MsgBoxResult.Yes   Then  
                                  Parent0   =   Parent_P.Parent  
                                  For   i   =   0   To   Tb.Rows.Count   -   1  
                                          If   Tb.Rows(i)("DWDM")   =   Dwdm_Pub1   Then  
                                                  Tb.Rows(i).Delete()  
                                          End   If  
                                  Next  
                                  ad.Update(Ds,   "DWXX")  
                                  Parent0.Nodes.Remove(Parent_P)  
                                  Button4.Enabled   =   False  
                          End   If  
                  Catch   ex   As   Exception  
                          MsgBox(ex.Message,   MsgBoxStyle.Information,   "提示")  
                  End   Try  
          End   SubTop

3 楼KahnWinsock(卡恩)回复于 2005-06-02 23:53:18 得分 0

怎么还用写存储过程呢?有什么浏览合同之外的需求吗?  
  想加树,很容易,首先你得有一个结构合理的表装合同,名列如下:  
  合同编号 合同名称 上级合同编号  
  有了这个表之后,利用递归算法,把合同填加到树上。提醒一下,如果一下子有329个合同以上的话,填树会有点慢。  
  如果同意我的表结构,那我可以再补上填树的方法。Top

4 楼qgqchile(qgq)回复于 2005-06-03 01:00:34 得分 0

先多谢各位热心人了受益非浅  
  有没有给WEB   做的?  
   
  对于数据库还是有一点小要求的,有的合同下只能跟合同,有的合同下可以加工作人员,工作人员不会再有下层了,这样的话我就需要两个TABLE   一个合同的另一个人员的    
   
  Top

5 楼qgqchile(qgq)回复于 2005-06-03 01:03:06 得分 0

KahnWinsock(卡恩)    
   
  你的那个结构很适合我的情况,不知道在WEB   下如何将树加进去  
  多谢了,VB   或C#的代码都可以接受,Top

6 楼Snrmnm_sx(Ψ 踏雪无痕 Ω)回复于 2005-06-03 01:10:19 得分 0

在WEB下只能加载页面!  
   
  1.你可以用脚本来实现  
  <iewc:TreeNode   NavigateUrl="aaaa.aspx"   Text="*****"   Target="bbbbbb"></iewc:TreeNode>  
  aaaa.aspx   是你要加载的页面  
  bbbbbb是你要加载到什么地方  
  *****是这个节点的方本  
  2.也可以用  
    Dim   cnd   As   New   TreeNode  
    cnd.id=……‘你已经知道ID了!  
  cnd.NavigateUrl   =   "AAAA.aspx"  
   
  Top

7 楼tihua(告诉我吧)回复于 2005-06-03 08:39:46 得分 0

路过Top

相关问题

  • 会Delphi的朋友请指点一下
  • treeview安装是出现错误,高手指点一下
  • 指点一下
  • 指点我一下呀,我菜,我笨,找个朋友
  • 使用过Report Builder的朋友请帮忙指点一下
  • 一个奇怪的现象??请朋友们指点一下
  • 一个奇怪的现象??请朋友们指点一下
  • 一个奇怪的现象??请朋友们指点一下
  • 请有经经验的朋友指点一下(散分)!!!
  • 请用过mysql-front的朋友指点一下

关键词

  • 节点
  • 代码
  • 结构
  • 合同
  • dwdm
  • dwmc
  • cnd
  • msgboxstyle
  • row
  • treeview

得分解答快速导航

  • 帖主:qgqchile
  • Snrmnm_sx

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo