none
我想获取treeview下某个节点子节点 以及子节点的子节点的value,以下方法却只能获取节点的子节点,子节点的子节点就无法获取了,请教高手 RRS feed

  • 问题

  •   public string Dep_Id(TreeNode tn,string dep_Val)
    
      {
    
       string str_Sep = ",";
    
       TreeNodeCollection tnc = tn.ChildNodes;
    
       dep_Val = tn.Value;
    
       foreach (TreeNode cur_Tn in tnc)
    
       {
    
        dep_Val = dep_Val + str_Sep + cur_Tn.Value;
    
        Dep_Id(cur_Tn,dep_Val);
    
       }
    
       
    
       return dep_Val;
    
      }
    
    

    节点ID  父节点id

    1            0

    2            1

    3            1

    4            2

    5            2

    6            2

    7            3

    如果调用:

    Dep_Id(TreeView1.SelectedNode,TreeView1.SelectedNode.Text)//我点击的是根节点

    返回的字符串是:1,2,3

    可我想返回的字符串是:1,2,3,4,5,6,7

    2010年10月3日 5:27

答案

  • 你好:

    就我所知应该是你递归调用时没有将遍历节点得到的值传出来。

    你可以尝试修改函数第二个Dep_Id(TreeView1.SelectedNode,ref string value)

    希望对你有所帮助。


    I am here!
    2010年10月4日 6:47
    版主
  • 程序没有问题是可以遍历多级子节点,应该是参数dep_Val赋值出现的问题

    你可以用隐藏域的方式记录值

            foreach (TreeNode cur_Tn in tnc)
            {

                this.TextBox1.Text = this.TextBox1.Text + str_Sep + cur_Tn.Value;
                Dep_Id(cur_Tn, this.TextBox1.Text);

            }

     

            return this.TextBox1.Text;

    如果你想弄清赋值问题的所在 建议你断点一步一步查看是如何赋值的.


    发现问题,解决问题!
    2010年10月8日 3:44

全部回复

  • 你好:

    就我所知应该是你递归调用时没有将遍历节点得到的值传出来。

    你可以尝试修改函数第二个Dep_Id(TreeView1.SelectedNode,ref string value)

    希望对你有所帮助。


    I am here!
    2010年10月4日 6:47
    版主
  • 在调用时Dep_Id

    (TreeView1.SelectedNode,ref TreeView1.SelectedNode.Text)

    报错:

    错误 6 属性、索引器或动态成员访问不得作为 out 或 ref 参数传递 I:\text\bmxz.aspx.cs 145 166 text

    2010年10月4日 7:51
  • 程序没有问题是可以遍历多级子节点,应该是参数dep_Val赋值出现的问题

    你可以用隐藏域的方式记录值

            foreach (TreeNode cur_Tn in tnc)
            {

                this.TextBox1.Text = this.TextBox1.Text + str_Sep + cur_Tn.Value;
                Dep_Id(cur_Tn, this.TextBox1.Text);

            }

     

            return this.TextBox1.Text;

    如果你想弄清赋值问题的所在 建议你断点一步一步查看是如何赋值的.


    发现问题,解决问题!
    2010年10月8日 3:44