我在treeview是手动添加了根节点aa,bb,cc,dd它们都没有子节点,
就是aa    这样的,但是我想要的是aa()
    bb                       bb()
    cc                       cc()
    dd                       dd()                                我有一个表tbinfo里面有两个字段id,tname,这个表是用来存储我要添加的记录,
如:id     tname    就是这样的,现在treeview里已经添加好节点了,就是从数据库里查出他们的个数,若数据库里没有
    1      aa
    2      aa
    3      bb
    4      cc就像以上这个表,那么在treeview里就应该是aa(2)    要的就是这样的结果!
                                    bb(1)
                                    cc(1)
                                    dd(0)                      
          

解决方案 »

  1.   

     DataTable dt = data.Tables[0];
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TreeNode NewNode = new TreeNode(dt.Rows[i][0].ToString() + "(" + dt.Rows[i][1].ToString() + ")");
                    this.treeView1.Nodes.Add(NewNode);
                   
                }
    这样不行,这样只能显示表里有的节点,也就是表里面如果不存在dd那么就不会显示dd(0)这样的效果,再说了如果在treeview里手动添加了节点的话那么,这样也会重新添加节点,就成了
    aa
    bb
    cc
    dd
    aa(1)
    bb(1)
    cc(0)  这样了,这样就不好了!
      

  2.   

    就是从表里读出aa,bb,cc,dd 的个数,再加到它们后面
      

  3.   

    string connString = "...";
    string cmdText = "SELECT COUNT(*) AS Count, tname FROM tbinfo GROUP BY tname DESC";
    conn.Open();
    SqlConnection conn = new SqlConnection(connString)
    SqlCommand cmd = new SqlCommand(cmdText, conn);
    SqlDataRead dr = cmd.ExecuteReader();
    While(dr.Read()){
        TreeNode NewNode = new TreeNode(dr.GetString("Count") + "(" + dr.GetString("tname") + ")")");
        this.treeView1.Nodes.Add(NewNode);
    }
    dr.Close();
    conn.Close();老实说我也只知道你要干什么,但是不知道你出了什么问题?
    只能把过程写出来,但是没有经过测试,也只是在这 CSDN 的这个留言框里直接写。
    语法应该会有错,毕竟用惯 VS 。你看看思路吧!
      

  4.   

    查询出数据之后把Node的Text改一下啊。
    你可以把aa,bb,cc这些放在Tag属性里面,这样的话Node.Text = Node.Tag + "(" +num+")";
    这样的话刷新之后因为Tag一直没有修改所以不会出现Text一直加的问题