请问我已经用treeview显示了树型数据,怎么再用listview具体显示啊?在哪触发什么事件啊? 

解决方案 »

  1.   


      
      
      首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才    
    移 动∣专 题∣SUN∣IBM∣微 软∣微 创∣精 华∣Donews∣人 邮 
    我的技术中心  
    我的分类 我的文档 
    最新文章 发表文章 
    专栏管理 使用说明 
      RSS 订阅  
    Windows/.NET 
    .NET  (rss)     
    Visual C++  (rss)     
    Delphi  (rss)     
    Visual Basic  (rss)     
    ASP  (rss)     
    JavaScript  (rss)     
    Java/Linux 
    Java  (rss)     
    Perl  (rss)     
    综合 
    其他开发语言  (rss)     
    文件格式  (rss)     
    企业开发 
    游戏开发  (rss)     
    网站制作技术  (rss)     
    数据库 
    数据库开发  (rss)     
    软件工程 
    其他  (rss)     
     积极原创作者  
    huangyaoshifog (11) 
    sunjx119 (3) 
    hiswing (8) 
    VirusHuo (1) 
    trier (10) 
    rosen (11) 
    blundblade (5) 
    billy_zh (3) 
    zky (3) 
    ScriptBaby (2) 
     
      CSDN - 文档中心 - .NET  阅读:5678   评论: 14    参与评论  
      
    标题   TreeView使用集锦     hgknight [原作]  
    关键字   TreeView 
    出处    
     
     原来在论坛里发过专题帖子,只是由于帖子丢失原因,有些问题找不到了,同时这次也补充了一些,发到文档区以方便查询吧
    原贴
    http://expert.csdn.net/Expert/topic/1525/1525202.xml1.下载地址
    http://msdn.microsoft.com/downloads/samples/internet/ASP_DOT_NET_ServerControls/WebControls/default.asp
    下载后是后缀为bat的版本
    (1)bulid.将bulid.bat的路径指向csc.exe所在路径,生成Microsoft.Web.UI.WebControls.dll。
    (2)在wwwroot下创建空目录webctrl_client\1_0。
    (3)将build\Runtime下的文件拷至webctrl_client\1_0下。
    (4)选择工具箱的自定义工具箱,添加Microsoft.Web.UI.WebControls.dll。
    有些麻烦
    但如果你能找到后缀是msi的自动安装版本,直接下一步就行(我一直用这个版本,hoho)
    安装后,通过“自定义工具箱”->“.net框架组件”把TreeView添加到工具箱里2.运行时无法显示
    一般是TreeView的版本问题,最好下载英文版自动安装版本重新安装,安装前应该先到添加删除程序里卸掉原版本3.显示格式出错(非树状显示)
    TreeView要求客户端浏览器版本为IE5.5及以上,最好要求客户端升级为IE6.04.框架里使用TreeView
    设置NavigateUrl、Target属性,可更新另外的Frame5.找不到TreeNode类
    使用TreeView,最好添加namespace:using Microsoft.Web.UI.WebControls;6.遍历TreeView节点(递归算法)
    private void Page_Load(object sender, System.EventArgs e)
    {
     GetAllNodeText(TreeView1.Nodes);
    }
    void GetAllNodeText(TreeNodeCollection tnc)
    {
     foreach(TreeNode node in tnc)
     {
      if(node.Nodes.Count!=0)
       GetAllNodeText(node.Nodes);
      Response.Write(node.Text + " ");
     }
    }7.得到node结点的父节点
    TreeNode pnode;
    if(node.Parent is TreeNode)
     pnode=(TreeNode)node.Parent;
    else
     //node is root node8.修改TreeView样式(示例)
    <iewc:TreeView id="TreeView1" runat="server" HoverStyle="color:blue;background:#00ffCC;" DefaultStyle="background:red;color:yellow;" SelectedStyle="color:red;background:#00ff00;">
    用代码:
    TreeView1.DefaultStyle["font-size"] = "20pt";9.展开时不提交,改变选择节点时才提交
    将autopostback设置成false;  
    在body里添加  <body  onload="initTree()">  
    然后在PageLoad里写:  
    string  strTreeName  =  "TreeView1";  
    string  strRef  =  Page.GetPostBackEventReference(TreeView1);  
    string  strScript  =  "<script  language=\"JavaScript\">  \n"  +  "<!--  \n"  +  "            function  initTree()  {  \n"  +"                        "  +  strTreeName  +  ".onSelectedIndexChange  =  function()  {  \n"  +    "if  (event.oldTreeNodeIndex  !=    
    event.newTreeNodeIndex)  \n"  +  "this.queueEvent('onselectedindexchange',  event.oldTreeNodeIndex  +  ','  +  event.newTreeNodeIndex);  \n"  +    "window.setTimeout('"  +  strRef.Replace("'","file://'/")    +  "',  0,  'JavaScript');  \n"  +    "                        }  \n"  +      "            }  \n"  +    "//  -->  \n"  +  "</script>";  
    Page.RegisterClientScriptBlock("InitTree",strScript  );  
     
    这样就只有你点击的节点更改的时候才提交!10.TreeView结合XML
    把XML文件设置为如下格式,然后直接设置TreeNodeSrc为该XML文件就行
    <?xml version="1.0" encoding="GB2312"?>
    <TREENODES>
     <TREENODE TEXT="node0" EXPANDED="true">
      <TREENODE TEXT="node1"/>
      <TREENODE TEXT="node2"/>
     </TREENODE>
     <TREENODE TEXT="node3" NavigateURL="3.aspx"/>
    </TREENODES>
    或者用代码
    TreeView1.TreeNodeSrc="a.xml";
    TreeView1.DataBind(); 客户端控制TreeView
    http://expert.csdn.net/Expert/topic/1382/1382892.xml1.设置所选节点,如选中第二个节点
    function SetSelNode()
    {
     TreeView1.selectedNodeIndex="1";
    }2.得到所选节点的Text,ID或NodeData
    function GetAttribute()
    {
     alert(TreeView1.getTreeNode(TreeView1.selectedNodeIndex).getAttribute("Text"));
    }
    替换Text为ID或NodeData,可分别得到所选节点的ID或NodeData3.修改节点属性,如修改第一个节点的Text
    function ModifyNode()
    {
     var node=TreeView1.getTreeNode("0");
     node.setAttribute("Text","hgknight");
    }4.得到点击节点
    function TreeView1.onclick()
    {
     alert(TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute("Text"));
    }5.添加节点
    function AddNode()
    {
     var node=TreeView1.createTreeNode();
     node.setAttribute("Text","hgknight");
     TreeView1.add(node);    
    }6.js遍历所有节点
     var AllRootNode=new Array();
     AllRootNode=TreeView1.getChildren();
     AlertNode(AllRootNode);    function AlertNode(NodeArray)
     {
      if(parseInt(NodeArray.length)==0)
       return;
      else
      {
       for(i=0;i<NodeArray.length;i++)
       {
        var cNode;
        cNode=NodeArray[i];
        alert(cNode.getAttribute("Text"));
        if(parseInt(cNode.getChildren().length)!=0)
         AlertNode(cNode.getChildren());    
       }
      }
     }
     
    对该文的评论  
     gxwzndx ( 2004-06-25)  
    学习  
     CSDN 网友 ( 2004-06-12)  
    6.js遍历所有节点
    循环之前要定义 i要不不行
    var i
        
     zzs81725 ( 2004-06-02)  
    treeView dowload  
     lzh3692003 ( 2004-05-29)  
    你好,救命啊!
    能否给我个C#版的TREEVIEW例子。树下有(checkboxs)属性。
    实现的功能是:                             ____(Layer)《图层》第一层
                 |
         |____(Group1)《组层,同一时刻只能有一个组被标记》
         |    |
         |   |__(Device) 《设备层,拥有多层,能够多选》
         |    |
         |   |__(Device)
         |
         |____(Group2)   
            |__(Device)当选择组层或者组层下的设备层时,(checkboxs)属性被标记,如果选了另一层时,
    当前层被标记,上次(组层)的标记没了。
    帮帮我吧。各位大哥,大姐!
    在此谢谢你们了。
    我的MSN号码是:[email protected]
    我的EMAIL是:[email protected]
    急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急谢谢啊谢谢谢谢!!! 
     yaocn114 ( 2004-05-28)  
    我是新手,到底怎么做连接阿  【评论】 【关闭】 
     
     
    --------------------------------------------------------------------------------
    网站简介 - 广告服务 - 网站地图 - 帮助信息 - 联系方式 - English   
    北京百联美达美数码科技有限公司 版权所有 京ICP证020026号 
    Copyright &copy; CSDN.NET, Inc. All Rights Reserved 
     
      

  2.   


      
      
      首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才    
    移 动∣专 题∣SUN∣IBM∣微 软∣微 创∣精 华∣Donews∣人 邮 
    我的技术中心  
    我的分类 我的文档 
    最新文章 发表文章 
    专栏管理 使用说明 
      RSS 订阅  
    Windows/.NET 
    .NET  (rss)     
    Visual C++  (rss)     
    Delphi  (rss)     
    Visual Basic  (rss)     
    ASP  (rss)     
    JavaScript  (rss)     
    Java/Linux 
    Java  (rss)     
    Perl  (rss)     
    综合 
    其他开发语言  (rss)     
    文件格式  (rss)     
    企业开发 
    游戏开发  (rss)     
    网站制作技术  (rss)     
    数据库 
    数据库开发  (rss)     
    软件工程 
    其他  (rss)     
     积极原创作者  
    huangyaoshifog (11) 
    sunjx119 (3) 
    hiswing (8) 
    VirusHuo (1) 
    trier (10) 
    rosen (11) 
    blundblade (5) 
    billy_zh (3) 
    zky (3) 
    ScriptBaby (2) 
     
      CSDN - 文档中心 - .NET  阅读:1640   评论: 1    参与评论  
      
    标题   动态加载树----treeView     chenyu001 [原作]  
    关键字   .net 
    出处    
     
     动态加载树陈根发 命题:从数据库读取字段值作为树的节点 实现:一.把字段值取出放到DataSet 中二.添加一个根节点三.添加相应的子节点 代码如下using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data; namespace WindowsApplication3{     /// <summary>     /// Form1 的摘要说明。     /// </summary>     public class Form1 : System.Windows.Forms.Form     {         private System.Windows.Forms.TreeView treeView1;         /// <summary>         /// 必需的设计器变量。         /// </summary>         private System.ComponentModel.Container components = null;          public Form1()         {              //              // Windows 窗体设计器支持所必需的              //              InitializeComponent();               //              // TODO: 在 InitializeComponent 调用后添加任何构造函数代码              //         }          /// <summary>         /// 清理所有正在使用的资源。         /// </summary>         protected override void Dispose( bool disposing )         {              if( disposing )              {                   if (components != null)                    {                       components.Dispose();                   }              }              base.Dispose( disposing );         }          #region Windows 窗体设计器生成的代码         /// <summary>         /// 设计器支持所需的方法 - 不要使用代码编辑器修改         /// 此方法的内容。         /// </summary>         private void InitializeComponent()         {              this.treeView1 = new System.Windows.Forms.TreeView();              this.SuspendLayout();              //               // treeView1              //               this.treeView1.Dock = System.Windows.Forms.DockStyle.Bottom;              this.treeView1.ImageIndex = -1;              this.treeView1.Location = new System.Drawing.Point(0, 137);              this.treeView1.Name = "treeView1";              this.treeView1.SelectedImageIndex = -1;              this.treeView1.Size = new System.Drawing.Size(352, 136);              this.treeView1.TabIndex = 0;              this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect);              //               // Form1              //               this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);              this.ClientSize = new System.Drawing.Size(352, 273);              this.Controls.Add(this.treeView1);              this.Name = "Form1";              this.Text = "Form1";              this.Load += new System.EventHandler(this.Form1_Load);              this.ResumeLayout(false);          }         #endregion          /// <summary>         /// 应用程序的主入口点。         /// </summary>         [STAThread]         static void Main()          {              Application.Run(new Form1());         }          private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)         {                  }          private void Form1_Load(object sender, System.EventArgs e)         {              ShowForm();         }         private void ShowForm (){              treeView1.Nodes.Clear() ;              System.Windows.Forms.TreeNode mNode=new TreeNode("全部");              //mNode.ImageIndex =1;              treeView1.Nodes.Add(mNode) ;              //假设DataSet 已经取得              System.Windows.Forms.TreeNode nNode=new TreeNode("在职");              System.Windows.Forms.TreeNode pNode=new TreeNode("离职");              treeView1.TopNode.Nodes.Add(nNode) ;              treeView1.TopNode.Nodes.Add(pNode) ;              treeView1.Select ();              if (ds.Tables [0].Rows.Count <=0 )              {                   return;              }              else              {                   // add Add some childtreenodes                    foreach(DataRow dr in ds.Tables [0].Rows )                   {                                               System.Windows.Forms.TreeNode aNode=new TreeNode(dr["Name"].ToString() );System.Windows.Forms.TreeNode bNode=new TreeNode(dr["Name"].ToString());                       treeView1.Nodes [0].Nodes[0].Nodes .Add (aNode);                       treeView1.Nodes [0].Nodes[1].Nodes .Add (bNode);                   }              }}      }} 好了,节点的值就是字段值!
     
    对该文的评论  
     CSDN 网友 ( 2004-07-02)  
    我呼吁:做为程序员要有勤写注释的好习惯!!  【评论】 【关闭】 
     
     
    --------------------------------------------------------------------------------
    网站简介 - 广告服务 - 网站地图 - 帮助信息 - 联系方式 - English   
    北京百联美达美数码科技有限公司 版权所有 京ICP证020026号 
    Copyright &copy; CSDN.NET, Inc. All Rights Reserved 
     
      

  3.   

    private  void  treeView1_ItemDrag  (  object  sender  ,  ItemDragEventArgs  e  )
      {
      string  strItem  =  e.Item.ToString  (  )  ; 
    //开始进行"Drag"操作
    DoDragDrop  (  strItem  ,  DragDropEffects.Copy  |  DragDropEffects.Move  )  ;
      }private  void  listView1_DragEnter  (  object  sender  ,  DragEventArgs  e  )
      {
      //判断是否目前拖动的数据是字符串,如果是,则拖动符串对目的组件进行拷贝
      if  (  e.Data.GetDataPresent  (  DataFormats.Text  )  )
      e.Effect  =  DragDropEffects.Move  ;
      else
      e.Effect  =  DragDropEffects.None  ;
      }
       
    (3).获得拖放的字符串,在目标组件中加入相应的内容: 
    private  void  listView1_DragDrop  (  object  sender  ,  DragEventArgs  e  )
      {
      string  dummy  =  "temp"  ;
      //获得进行"Drag"操作中拖动的字符串
      string  s  =  (  string  )  e.Data.GetData  (  dummy.GetType  (  )  )  ;
      s  =  s.Substring  (  s.IndexOf  (  ":"  )  +  1  ).Trim  (  )  ;
      Position.X  =  e.X  ;
      Position.Y  =  e.Y  ;
      Position  =  listView1.PointToClient  (  Position  )  ;
      //在目标组件中加入以此字符串为标题的项目
      listView1.Items.Add  (  new  ListViewItem  (  s  ,  0  )  )  ;
      }  
    三. 由ListView组件到TreeView组件的拖放操作: 
    (1).开始"拖"(Drag)操作: 
    private  void  listView1_ItemDrag  (  object  sender  ,  ItemDragEventArgs  e  )
      {
      //判断是否是鼠标右键按动
      if  (  e.Button  ==  MouseButtons.Right  )  return    ;
      int  nTotalSelected  =  listView1.SelectedIndices.Count  ;
      //判断组件中是否存在项目
      if  (  nTotalSelected  <=  0  )  return    ;
      IEnumerator  selCol  =  listView1.SelectedItems.GetEnumerator  (  )  ;
      selCol.MoveNext  (  )    ;
      ListViewItem  lvi  =  (  ListViewItem  )selCol.Current  ;
      string  mDir  =  ""  ;
      for  (  int  i  =  0  ;  i  <  lvi.SubItems.Count  ;  i++  )
      mDir  +=  lvi.SubItems[  i  ].Text  +  "  ,"  ;
      string  str  =  mDir.Substring  (  0  ,  mDir.Length-1  )  ;
      if  (  str  ==  ""  )  return    ;
      //对组件中的字符串开始拖放操作
      listView1.DoDragDrop  (  str    ,  DragDropEffects.Copy  |  DragDropEffects.Move  )    ;
      }  
      

  4.   

    怎么大部分是treeview的用法啊?不好意思,我是新手,能不能具体些?谢谢了!!
      

  5.   

    我现在正用到,如果你需要VB的我可以给你一个好用的代码
    我先做的是C#,呵呵,当然比VB的要复杂。
    左边是TreeView,连接数据库得到数据(根据文件夹的路径层次),右边是ListView,类似于资源管理器显示的格式。
    基本的功能就是一个资源管理器。其他的功能可以自己写
    [email protected]
      

  6.   

    我也是用c#,和你说得一样,左边Treeview右边Listview,介绍一下基本的使用撒!~~
      

  7.   

    使用TreeView.AfterSelect 事件,
    在事件处理函数中刷新ListView.