首 页文章中心下载中心繁體中文
设为首页
加入收藏
联系我们
您当前的位置:开源盛世-源代码下载网 -> 文章中心 -> 网站开发类 -> NET 技术 -> Asp.Net -> 文章内容 退出登录 用户管理
栏目导航
· .NET基础 · Asp.Net
· 综合应用 · 数据库应用
· XML 应用 · 控件开发和使用
热门文章
· Tab Control控件使用...
· 学生档案管理系统
· [图文] 排列组合公式
· UTF-8与GB2312之间的...
· DirectShow下载安装...
· Virtual PC 在PAE模...
· Windows2000终端服务...
· MapInfo上的GIS系统...
· Mapbasic参考手册索...
· MapX应用开发中文讲...
相关文章
给大家发个TreeView的用法的心得
作者:fnba  来源:chinaaspx.com  发布时间:2006-1-9 9:49:30  发布人:Polaris

减小字体 增大字体

前言:这是我第一次用TreeView控件,不足之处请谅解
一:从数据库里读取数据,添加到TreeView里,数据库的设计是这样的
   ID                  ParentID                     Name
自增值(是唯一的)    上级的ID号(与ID相关)    用于在TreeView显示的名称

private void Page_Load(object sender, System.EventArgs e)
                      {
                                if(!IsPostBack)
                                {InitRootTree(this.TreeView1.Nodes);}
                      }
private void InitRootTree(TreeNodeCollection TNC)
      {
         DataView dataView=new DataView();//实例化个视图
//ds是DataSet,已经从数据库里读取所有的数据了
         dataView=ds.Tables[0].Copy().DefaultView;//将ds填充到视图里
//ParentID是上级节点,由于第一个节点是没有上级节点的,所以我在数据库里把他的上级节点设置为0
         dataView.RowFilter = "ParentID = '0'";//读取数据库里ParentID为0的行
         foreach(DataRowView drv in dataView)
         {
            TreeNode tn=new TreeNode();
            tn.ID=drv["ID"].ToString();
            tn.Text=drv["Name"].ToString();
            TNC.Add(tn);//添加节点
            //添加子节点
            InitChildNodeTree(tn.Nodes,tn.ID);
         }
         ds=null;
      }
private void InitChildNodeTree(TreeNodeCollection TNC,string ParentId)
      {
         DataView dataView=new DataView();
         dataView=ds.Tables[0].Copy().DefaultView;
         dataView.RowFilter="ParentID=" + ParentId + "";
         foreach(DataRowView drv in dataView)
         {
            TreeNode tn=new TreeNode();
            tn.ID=drv["ID"].ToString();
            tn.Text=drv["Name"].ToString();
            TNC.Add(tn);
            //递归
            InitChildNodeTree(tn.Nodes,tn.ID);
         }
      }

二:添加节点
//获得选中节点对应的ID号
string NodesID = TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex).ID;
//把得到的ID号做为上级节点的ID号,然后执行一个简单的插入操作.
string insert = "Insert Into 表名(ParentID,Name)Values(NodesID,新节点)";
SqlCommand sqlcmd = new SqlCommand(insert,sqlcon);
sqlcmd.ExecuteNonQuery();

TreeView1.Nodes.Clear();//清空所有的TreeView节点
InitRootTree(this.TreeView1.Nodes);//调用InitRootTree方法重新加栽所有数据

三:删除节点
方法和添加节点方法基本相同,这里就不重复写了.
提示:在用户删除节点时应先判断用户所选中的节点是否有子节点,如果有就应该个用户相应的提示
1:提示用户先把该节点下的子节点先删除
2:提示后,把用户所选中的节点下的所有子节点都删除(需要用递归法)
最后记得调用以下方法,否则显示时可能会出错
TreeView1.Nodes.Clear();//清空所有的TreeView节点
InitRootTree(this.TreeView1.Nodes);//调用InitRootTree方法重新加栽所有数据

四:保持选中节点展开状态
//str是用户所选中的节点,TreeView1.SelectedNodeIndex这样获得
private void openNodes(string str)
      {
         string src = null;
         string len = str.Replace(".",null);
         for(int i = 0; i < len.Length; i++)
         {
            if(i == 0)
            {
               src = str.Substring(0,1);
            }
            else
            {
               src = src + str.Substring(src.Length,2);
            }
            TreeView1.GetNodeFromIndex(src).Expanded = true;
         }
      }
由于比较简单就没有每一行都加注释了...如果每一行都注释反而觉得罗嗦,而且让大家自己看看、多想想会记得更牢.所谓一样精,百样通

好了就先说到这里,希望大家多多支持,有不懂的地方或者有更好的建议就提出来,大家一起研究研究,一起学习一起进步...

End of《给大家发个TreeView的用法的心得》

[] [返回上一页] [打 印] [收 藏]
下一篇文章:Unicode简介
 
∷相关“给大家发个TreeView的用法的心得”文章评论∷
(评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 网站目录 鄂ICP备06007162
开源盛世 版权所有Copyright © 2003-2005 VSCodes.Com. All Rights Reserved.