新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论.NET,C#,ASP,VB技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 Dot NET,C#,ASP,VB 』 → TreeView使用的一些心得 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 7862 个阅读者  浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: TreeView使用的一些心得 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     admin 帅哥哟,离线,有人找我吗?
      
      
      
      威望:9
      头衔:W3China站长
      等级:计算机硕士学位(管理员)
      文章:5255
      积分:18407
      门派:W3CHINA.ORG
      注册:2003/10/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给admin发送一个短消息 把admin加入好友 查看admin的个人资料 搜索admin在『 Dot NET,C#,ASP,VB 』的所有贴子 点击这里发送电邮给admin  访问admin的主页 引用回复这个贴子 回复这个贴子 查看admin的博客楼主
    发贴心情 TreeView使用的一些心得


    发信人: minerva (cheng), 信区: DotNET
    标  题: TreeView使用的一些心得
    发信站: BBS 水木清华站 (Sun Sep  7 10:33:31 2003), 转信

    (1)动态生成TreeView
    假设数据库中有两个表,一个为班级表,有班号和班名两个属性,班号ccode为主键,一
    个为学生表,有学号和姓名两个属性,学号scode为主键,根节点为学院。又假设在db类
    中已经写好了从数据源中选择数据的Select方法。树控件ID为TREE。
        Void InTree()
    {
       Tree.Nodes.Clear();
       TreeNode Root = New TreeNode();
       Root.Text = "学院";
       Root.Type = "0";
       Tree.Node.Add(Root);
        
       string strSql="SELECT * FROM CLASS";
       DataTable dt = New DataTable();
       dt = this.db.Select(strSql);
       for(int i=0;i<dt.Rows.Count;i++)
    {
      TreeNode tmpnode = new TreeNode();
      Root.Nodes.Add(tmpnode);
      tmpnode.ID = dt.Rows[i][0].Tostring();
      tmpnode.Text = dt.Rows[i][1].Tostring();
      tmpnode.type = "1";

      string strSql1 = "SELECT * FROM STUDENT";
      DataTable dt1 = new DataTable();
      dt1 = this.db.Select(strSql1);
      for(int j = 0; j<dt1.Rows.Count;j++)
    {
       TreeNode tmpNd = New TreeNode();
       tmpnode.Nodes.Add(tmpNd);
       tmpNd.ID = dt1.Rows[i][0].Tostring();
       tmpNd.Text = dt1.Rows[i][1].Tostring();
       tmpNd.Type ="2";
    }  
    }       
    }

    (2)遍历树
    一般是递归算法,网上的算法一般是酱紫的

    public void GetAllNodeText(TreeNodeCollection tnc)
    {
    foreach (TreeNode node in tnc)
    {
      if( node.Nodes.Count != 0 )
       GetAllNodeText(node.Nodes);
      }
    }


    但是在做项目时我发现一个问题,用foreach循环,在对treeview节点的checkbox属性为
    true多个节点进行遍历删除时,会出现枚举错误,所以我采用了for循环写法.
    代码如下:

    Void GetRoot()
    {
      TreeNode Root = TREE.GetNodeFromIndex("0");
      DELET(Root);

    }
    Void DELEt(TeeNode node)
    {
      
      
    for(int i =0;i<node.Nodes.Count;i++)
    {    
       TreeNode Tnode = new TreeNode();
       Tnode = node.Nodes[i];
       if(node.Checked == true)
    {  Tnode.ReMove();
       i--;
    }
    else
    {
    DELET(Tnode);
    }
       
    }
    }
    另外,网上在做删除操作时,总是先用TreeNode NdSel = (TreeNode)Tnode.Parent.得到父
    节点,然后用NdSel.Remove(Tnode);实践证明,不需要如此.


    今天线写道这里,因为写的时候没有.net编译器,程序可能有错,希望大家原谅,晚些时候再
    补充一些.

    时间匆忙,没写注释,晚些时候一起补上.
    --

    ※ 修改:·minerva 于 Sep  7 10:35:16 修改本文·[FROM:   210.42.96.114]
    ※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.42.96.114]
    上一篇
    返回上一页
    回到目录
    回到页首
    下一篇


       收藏   分享  
    顶(0)
      




    ----------------------------------------------

    -----------------------------------------------

    第十二章第一节《用ROR创建面向资源的服务》
    第十二章第二节《用Restlet创建面向资源的服务》
    第三章《REST式服务有什么不同》
    InfoQ SOA首席编辑胡键评《RESTful Web Services中文版》
    [InfoQ文章]解答有关REST的十点疑惑

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/9 2:26:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Dot NET,C#,ASP,VB 』的所有贴子 点击这里发送电邮给Google AdSense  访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/7/16 2:52:56

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    46.875ms