从数据库里读出DATATABLE,里边有一个项是父节点ID,如何根据这个父节点ID把数据库里的树形结构对应到treeview里,
关键是有很多层,每层都.nodes[i].add(tn)的话就得N个.node[].node[].node[],有没有更好的方法?

解决方案 »

  1.   

    http://www.cnblogs.com/SunYu/archive/2010/04/29/1724367.html
      

  2.   

            private void bindTreeView1()
            {
                string sql = "select * from dm_category";
                DataTable dt = db.ExecuteDataTable(sql, CommandType.Text, null);
                DataRow[] dr = dt.Select("parent_id is null");
                for (int i = 0; i < dr.Length; i++)
                {
                    TreeNode tn = new TreeNode();
                    tn.Text = dr[i]["category_name"].ToString();
                    tn.Tag = dr[i]["id"].ToString();
                        FillTree(tn, dt);
                    treeView1.Nodes.Add(tn);
                }
            }        private void FillTree(TreeNode node, DataTable dt)
            {
                DataRow[] drr = dt.Select("parent_id='" + node.Tag.ToString() + "'");
                if (drr.Length > 0)
                {
                    for (int i = 0; i < drr.Length; i++)
                    {
                        TreeNode tnn = new TreeNode();
                        tnn.Text = drr[i]["category_name"].ToString();
                        tnn.Tag = drr[i]["id"].ToString();
                        if (drr[i]["parent_id"].ToString() == node.Tag.ToString())
                        {
                            FillTree(tnn, dt);
                        }
                        node.Nodes.Add(tnn);
                    }
                }
            }
      

  3.   

    刚好,不妨试看http://topic.csdn.net/u/20120717/19/cea2499e-8a49-412f-8897-6b89d92047bf.html
      

  4.   

    还好你不打算在node上显示一个gridview之类的东西。