请问treeview怎么和listview联合使用? 请问我已经用treeview显示了树型数据,怎么再用listview具体显示啊?在哪触发什么事件啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才 移 动∣专 题∣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(); 客户端控制TreeViewhttp://expert.csdn.net/Expert/topic/1382/1382892.xml1.设置所选节点,如选中第二个节点function SetSelNode(){ TreeView1.selectedNodeIndex="1";}2.得到所选节点的Text,ID或NodeDatafunction GetAttribute(){ alert(TreeView1.getTreeNode(TreeView1.selectedNodeIndex).getAttribute("Text"));}替换Text为ID或NodeData,可分别得到所选节点的ID或NodeData3.修改节点属性,如修改第一个节点的Textfunction 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 © CSDN.NET, Inc. All Rights Reserved 首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才 移 动∣专 题∣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 © CSDN.NET, Inc. All Rights Reserved 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 ) ; } 怎么大部分是treeview的用法啊?不好意思,我是新手,能不能具体些?谢谢了!! 我现在正用到,如果你需要VB的我可以给你一个好用的代码我先做的是C#,呵呵,当然比VB的要复杂。左边是TreeView,连接数据库得到数据(根据文件夹的路径层次),右边是ListView,类似于资源管理器显示的格式。基本的功能就是一个资源管理器。其他的功能可以自己写[email protected] 我也是用c#,和你说得一样,左边Treeview右边Listview,介绍一下基本的使用撒!~~ 使用TreeView.AfterSelect 事件,在事件处理函数中刷新ListView. MySql里面写浮点型 Sharepoint地址栏会自动加密怎么将其解密 关于制作安装程序 关于动态编程,咋看不出异同之处呀 在一个类中如何对from1中的控件赋值 门牌号排序问题 关于网络传输数据的菜鸟问题 iis集成安装问题,急!!! 如何通过子窗体使父窗体作一些事,如子窗体给定条件,用DATAGRID把数据显示出来?? 我的安装老是不能成功,那一位大虾能告诉我,谢了 帮帮忙啊 ,立刻给分 很简单的问题,我给100分(好象最高这么多)很急。
首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动∣专 题∣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 © CSDN.NET, Inc. All Rights Reserved
首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动∣专 题∣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 © CSDN.NET, Inc. All Rights Reserved
{
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 ) ;
}
我先做的是C#,呵呵,当然比VB的要复杂。
左边是TreeView,连接数据库得到数据(根据文件夹的路径层次),右边是ListView,类似于资源管理器显示的格式。
基本的功能就是一个资源管理器。其他的功能可以自己写
[email protected]
在事件处理函数中刷新ListView.