public void addNodes(DataTable table)
    {
        DataView view = new DataView(table);
        view.RowFilter = "ParentId = 0 ";
        foreach (DataRowView row in view)
        {
            TreeNode newNode = new TreeNode();
            newNode.Text = row["FileName"].ToString();
            newNode.Value = row["FileId"].ToString();
            TreeView1.Nodes.Add(newNode);
            addChildNodes(table, newNode);
        }
    }    public void addChildNodes(DataTable table, TreeNode treenode)
    {
        DataView view = new DataView(table);        view.RowFilter = "ParentId = " + treenode.Value;
        foreach (DataRowView row in view)
        {
            TreeNode newNode = new TreeNode();
            newNode.Text = row["FileName"].ToString();
            newNode.Value = row["FileId"].ToString();
            treenode.ChildNodes.Add(newNode);
            addChildNodes(table, treenode);
        }
    }
上面的方法运行时会提示访问数据方面的错误应该怎样写来添加一个二级节点高手帮我改一下

解决方案 »

  1.   

    http://www.51aspx.com/CV/SqlTree/
    http://www.cnblogs.com/virusswb/archive/2008/07/01/1233208.html
      

  2.   

    foreach (DataRowView row in view)
            {
                TreeNode newNode = new TreeNode();
                newNode.Text = row["FileName"].ToString();
                newNode.Value = row["FileId"].ToString();
                treenode.ChildNodes.Add(newNode);
                addChildNodes(table, treenode);
            }
    还有,怎么感觉这里像是个死循环啊。
      

  3.   

    把(DataRowView row in view)处的view该为view.Rows试试
      

  4.   

    private void CreateTreeView(TreeNodeCollection nodes, int parentId)
        {        
            List<SysFun> list = SysFunManager.GetSysFunByParentNodeId(parentId);
            TreeNode node;
            foreach (SysFun sys in list)
            {
                node = new TreeNode();
                node.Text = sys.displayName;
                node.Value = sys.nodeId.ToString();
                nodes.Add(node);
                CreateTreeView(node.ChildNodes, sys.nodeId);
            }
        }