本帖最后由 tank_2009 于 2010-04-06 09:46:07 编辑

解决方案 »

  1.   

    没懂你的怕云,想要什么样的TreeView打出个模型来给大家看,会更直观!~
      

  2.   

    递归循环,如果确定只有2层的话,hardcode,也可以,先取出aa,bb,cc,等,然后foreach取出来aa下面的电视机,洗衣机等,以此类推。
      

  3.   

    private void button1_Click(object sender, EventArgs e)
    {
        // 父, 子, 其他
        // aa, 电视机, ....
        // aa, 洗衣机, ....
        // bb, 脸盆 , ....
        // bb, 茶杯 , ....    DataTable dt = new DataTable();
        dt.Columns.Add("id");
        dt.Columns.Add("name");
        dt.Columns.Add("pid");
        dt.Rows.Add("1", "aa", "0");
        dt.Rows.Add("2", "bb", "0");
        dt.Rows.Add("3", "电视机", "1");
        dt.Rows.Add("4", "洗衣机", "1");
        dt.Rows.Add("5", "脸盆", "2");
        dt.Rows.Add("6", "茶杯", "2");    // 以上部分 直接从数据库中select 然后 Fill 到 DataTable。    nodes(this.treeView1.Nodes, dt, 0);
    }private void nodes(TreeNodeCollection tnode, DataTable dt, int id)
    {    DataView dview = new DataView(dt);      //创建视图 ,因为只有一张表
        dview.RowFilter = "[pid]=" + id + "";   //视图的好处,在于能方便筛选数据
        foreach (DataRowView row in dview)      //显示每个节点的标题,递归!
        {
            TreeNode node = new TreeNode();
            node.Text = row["name"].ToString();
            tnode.Add(node);
            nodes(node.Nodes, dt, Int32.Parse(row["id"].ToString()));
        }
    }
      

  4.   

    可以完全使用TreeNode数组来构造啊
                TreeNode[] treeNodes = new TreeNode[2];
                treeNodes[0] = new TreeNode();
                treeNodes[0].Text = "aa";
                treeNodes[1] = new TreeNode();
                treeNodes[1].Text = "bb";
                List<string> alist = new List<string>();
                alist.Add("电视机");
                alist.Add("洗衣机");
                foreach (string a in alist)
                {
                    treeNodes[0].Nodes.Add(a);
                }
                List<string> blist = new List<string>();
                blist.Add("茶具");
                blist.Add("洗剧");
                foreach (string b in blist)
                {
                    treeNodes[1].Nodes.Add(b);
                }
                for (int i = 0; i < treeNodes.Length; i++)
                {
                    treeView1.Nodes.Add(treeNodes[i]);
                }
      

  5.   

    上边的arrayList也可以替换成treeNode数组
      

  6.   

    什么叫“好像上全死循环”?你测试过?我已测试通过,是递归。项目中,数据一般都存数据库,动态管理。三个列id  name   pid
    1   aa     0
    2   bb     0
    3   电视机  1
    4   洗衣机  1
    5   脸盆    2
    6   茶杯    2